我有這樣的JSON例子:
$scope.channels = {
"ch1": {
id: "ch1",
data: {}
},
"ch2": {
id: "ch2",
data: {}
}
};
QUE 1
如何更新data: {}
部分與動態密鑰? 類似:
for (var c in $scope.channels) {
$http.get(JSON_PATH + c + '.json').then(function(res){
// DOES NOT WORK
$scope.channels[c]["data"] = res.data;
// ALSO DOES NOT WORK
var section = $scope.channels[c];
section.data = res.data;
$scope.channels[c] = section;
});
}
的$scope.channels
結果是,現在有一個新的部分所謂的「數據」,而不是關鍵==「CH1」(即)下是。
此外,崇高的文本3也給出了我不知道爲什麼一個警告? (這不是像我使用this
或東西: 181 don't make functions within a loop
QUE 2
我解決了上述問題,通過實際創建外部函數和循環中調用它
所以我想知道爲什麼在Que1上面的代碼無法正常工作,而這樣做:
function load_data(id) {
$http.get(JSON_PATH + c + '.json').then(function(res){
var section = $scope.channels[c];
var section.data = res.data;
$scope.channels[c] = section; // WORK
});
}
for (var c in $scope.channels) {
load_data(c);
}
Sublime給出了警告,因爲您應該在循環外的其他地方聲明您的函數,然後在循環內部,使用傳入參數(如循環索引)調用函數,如您在Que 2中演示的那樣。 –
您是否嘗試過使用控制檯.log或調試程序逐步查看每個步驟中每個變量的值並比較它們? –
是的,我有我需要在執行console.log數據......但角的範圍$收到不同的,因爲我不知道如何更新JSON,它不按預期工作 –