javascript - 无法设置未定义 Angular js 的属性

标签 javascript json angularjs asynchronous web

我有一个 json 对象列表 $scope.phones 和一个充满 json 文件的文件夹,其中包含有关每部手机的附加数据。我正在尝试遍历文件以获取更多信息以放入有关每部手机的列表中:

phonecatControllers.controller('PhoneListCtrl', ['$scope', 'Phone',
function($scope, Phone) {
$scope.phones = Phone.query();

var myTimer = window.setTimeout(function() {

    for (var i = 0; i < $scope.phones.length; i++){ 
        var weight = 0;             
        Phone.get({phoneId: $scope.phones[i].id}, function( phone) {
            weight = phone.sizeAndWeight.weight;
            $scope.phones[i].weight = weight;           
        });     
    };
} , 1000 );

$scope.orderProp = 'age';
}]);

定时器是为了让函数在设置 scope.phones 之后才会运行,(我意识到这有点 hack 但它不会引起问题。)我得到一个错误无法设置未定义的属性:

$scope.phones[i].weight = weight;   

如果我尝试在 .get 方法之外访问它,则没有问题,但是 weight 的新值在 get 方法之外不存在。

最佳答案

在循环之前等待电话列表:

Phone.query().then(function(phones){
  for(var i=0; i<phones.length; i++){
    var weight = 0;             
    Phone.get({phoneId: phones[i].id}, function( phoneDetails) {
        weight = phoneDetails.sizeAndWeight.weight;
        phones[i].weight = weight;           
    });
  }
}

关于javascript - 无法设置未定义 Angular js 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29661862/

相关文章:

javascript - 如果jquery live event代码已被删除,我还需要解绑它吗?

javascript - 当我按下 shift+l 键时如何在 html 中加载锁定屏幕

javascript - 使用来自 Facebook 的 JavaScript 方法

json - 如何在 jq 中为 CSV 导出添加标题?

javascript - 如果我单击其标签区域中的 anchor ,则不会选中单选按钮

javascript - 正则表达式 trim 字符串中空格和换行符的组合

ASP.NET 菜单父菜单项在启用浮出控件时在悬停时突出显示

java - 如何从json数组中读取特定的json对象元素?

javascript - $rootScope 在 AngularJs 中不与我一起工作

javascript - Protractor - 比较数字