Angularjs无法将数据服务响应添加到作用域变量
Angularjs cannot add data service response to scope variable
我的控制器中有一个函数,它请求数据服务,我正试图添加到当前范围变量中,但它给了我未定义的错误
$scope.affiliates = d.data;
if (isNaN($scope.affiliate_id)){
var i = 0;
while (i < $scope.affiliates.length){
var affiliate_id = $scope.affiliates[i].affiliate_id.replace(/["']/g, "");
DataService.getAffiliateConversionApiService(affiliate_id).then(function(apiData){
$scope.affiliates[i].apiData = apiData;//ERROR IN HERE
});
i++;
}
}
类型错误:$scope.affiliates[i]未定义
我还尝试过从dataService返回数据并将其设置在外部,但它总是返回空。我该如何解决此问题?
不要忘记getAffiliateConversionApiService
正在返回promise(这意味着它是一个异步操作),因此,在您甚至从getAffiliateConversionApiService
获得结果之前,您的while
块将为每个可能的i
值执行。
让我们假设$scope.affiliates.length
是6。当执行then
中的回调代码时,i
将为7。
一种解决方案是使用angular.forEach
而不是while
。但是,如果您仍然想使用while
,则需要将i
值存储在另一个变量中:
while (i < $scope.affiliates.length){
var index = i;
var affiliate_id = $scope.affiliates[i].affiliate_id.replace(/["']/g, "");
DataService.getAffiliateConversionApiService(affiliate_id).then(function(apiData){
$scope.affiliates[index].apiData = apiData;
});
i++;
}
这不是一个真正的答案,但这里有一些调试应该会帮助您。此外,我从使用while循环切换到使用angular’s for Each
$scope.affiliates = d.data;
if (isNaN($scope.affiliate_id)){
console.log($scope.affiliates); // what does this return?
angular.forEach($scope.affiliates, function(value, index){
console.log(value); // output the affiliate, if any
var affiliate_id = value.affiliate_id.replace(/["']/g, "");
DataService.getAffiliateConversionApiService(affiliate_id).then(function(apiData){
console.log(apiData); // see what is returned
$scope.affiliates[index].apiData = apiData; // still an error?
});
});
}
相关文章:
- 向Angular作用域对象添加对象数组——TypeError
- 正在向构造函数添加作用域变量
- AngularJs,在没有隔离的情况下将指令属性添加到作用域
- 将变量动态添加到每个控制器的作用域
- 在AngularJS中将元素添加到作用域时,如何在所有设备上播放声音
- 如果在transclusion之后添加,为什么指令下的动态元素具有错误的作用域
- AngularJS将函数添加到作用域
- 如何在angular.js中为http控制器添加作用域
- 如何将Item添加到作用域AngularJS
- 执行for循环将另一个对象添加到Javascript中的作用域链中
- 在绑定元素时从作用域对象添加格式
- Angularjs无法将数据服务响应添加到作用域变量
- 如何轻松确定;s在$作用域中添加/删除$看
- Angularjs将从下拉列表中选择的项添加到作用域
- 在Angular 2中为匿名JavaScript添加父作用域
- 如何在AngularJS的作用域之间添加输入框值
- 在AngularJS中将json添加到作用域
- 添加到全局作用域的函数变量
- 添加一个作用域变量作为window的参数.打开功能
- Javascript oop未定义值:用于添加作用域的方法