无法设置未定义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"设置为未定义。但当我控制台.log(r.data.toString(((时,它会显示值。

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

控制器:

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();

试试这个。

这被称为循环内部的闭包。

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);
}
}

最新更新