我有以下函数,它将变量描述作为参数
$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的值来自这里。
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(介绍);
这给了我未定义的值。
答案 0 :(得分:1)
你不能使用ngInit
这样做,因为它只运行一次,当它发生时变量prodres
尚未可用,因为它来自异步调用。
您可以做的是只有在ngInit
的值得到解决后才能执行prodres
:
<div ng-if="prodres" ng-init="relsingle(prodres[0].description)">...</div>
因为ngIf
具有更高的优先级,ngInit将仅在ngIf
之后执行。
答案 1 :(得分:0)
这是因为它是因为数组尚未在javascript中进行评估。使用回调函数并将该数组存储在$ scope范围内的变量中。然后可以在函数中使用它