我有一个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())时,它会显示值。
答案 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);
}
}