2016-11-12 33 views
0

我有以下函数,该函数变量描述为参数在功能AngularJS传递值正常

$scope.relsingle = function(description) { 
    console.log(description); 
    var url = $scope.url+'/api/descrelation?limit=4&description='+description; 
    $http.get(url).success(function(data) { 
     console.log(data); 
     $scope.apgresponse = data; 
    }) 
}; 

我用下面的方法来在HTML页面

ng-init="relsingle(prodres[0].description)" 

该值通过这个值prodres [0] .description来自这里。 Console output

而且prodres的价值来源于这里

$scope.prodat = function(id) { 

    var uri = $scope.url+'/api/getproduct?productid='+id; 
    console.log(uri); 
    $http.get(uri).success(function(data) { 
     console.log(id); 
     console.log(data); 
     $scope.prodres = data; 
    }) 
    }; 

当我在控制台中relsingle功能登录描述的价值。

console.log(description);

这给了我未定义的值。

+0

我用它认为ng-init被构建来处理表达式只是不确定它与运行的函数很好地工作。 – GillesC

+0

什么是prodres? – dfsq

+0

relsingle是我定义的一个自定义函数 –

回答

1

你不能这样做ngInit这样做,因为它只运行一次,当它发生变量prodres尚不可用,因为它来自异步调用。

什么但是你可以做的就是让ngInit执行后,才为prodres的价值已经得到解决:

<div ng-if="prodres" ng-init="relsingle(prodres[0].description)">...</div> 

因为ngIf具有更高的优先级ngInit只会ngIf后执行。

+0

仍然是一个糟糕的做法,首先使用'ng-init' – charlietfl

+0

因此,我应该遵循什么方法,请详细解释这种问题的合适方法 –

+0

@dfsq - 谢谢队友,这解决了我的问题 –

0

那么它是因为它是因为数组没有在javascript.Use评估一个回调函数和数组存储在$范围变量scope.Then你可以在功能