Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法设置未定义的角js的属性_Javascript_Json_Angularjs_Asynchronous_Web - Fatal编程技术网

Javascript 无法设置未定义的角js的属性

Javascript 无法设置未定义的角js的属性,javascript,json,angularjs,asynchronous,web,Javascript,Json,Angularjs,Asynchronous,Web,我有一个json对象列表,$scope.phones,还有一个包含json文件的文件夹,其中包含关于每部手机的附加数据。我正试图反复浏览这些文件,以获取更多信息,并将其放在关于每部手机的列表中: phonecatControllers.controller('PhoneListCtrl', ['$scope', 'Phone', function($scope, Phone) { $scope.phones = Phone.query(); var myTimer = window.setTi

我有一个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';
}]);

如果我尝试在.get方法之外访问此项,则不会出现问题,但是在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;           
    });
  }
}
Phone.query().then(函数(电话){

对于(var i=0;这里有几个问题,首先你应该看看在手机加载之前不更新手机的承诺,因为加载手机可能需要超过1秒的时间。另外,当
Phone.get
解决时,我将始终是
$scope.phones.length
你会想查看closu要解决此问题,请执行以下操作:
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;           
    });
  }
}