无法设置未定义angularjs的属性

时间:2018-11-27 06:43:25

标签: angularjs

我有一个json对象s.BdayDetails,我想将s.BdayDetails.ProvID的值更改为另一个值。

 for(var i=0;i<s.BdayDetails.length;i++){

h.post("../Event/getProvinceName?ProvID=" + s.BdayDetails[i].ProvID).then(function (r) {

s.BdayDetails[i].ProvID = r.data.toString(); })

返回错误无法设置未定义的属性“ ProvID”。但是当我console.log(r.data.toString())时,它会显示值。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用以下代码来实现与您描述的相同的功能。请检查此plunker link的示例代码实现。

控制器:

  var s ={
    BdayDetails: [{
      ProvID: '001',
      ProvName: 'KARNATAKA'
    },{
      ProvID: '002',
      ProvName: 'GOA'
    }]
  };
  var indx = 0;

  function nextProvince(){
    if(indx < s.BdayDetails.length){
      $http.post("../Event/getProvinceName?ProvID=" + s.BdayDetails[indx].ProvID).then(function (r) {
          s.BdayDetails[indx].ProvID = r.data.toString();
          indx++;
          nextProvince();
      });
    }else{
      indx=0;
    }
  }
  nextProvince();

答案 1 :(得分:0)

尝试一下。

This is called closure inside the loop.

for(var i=0;i<s.BdayDetails.length;i++){
   function(index){
        h.post("../Event/getProvinceName?ProvID=" + s.BdayDetails[i].ProvID).then(function (r) {
            s.BdayDetails[index].ProvID = r.data.toString();
        })
   })(i);
 }
}