我正在嘗試執行以下操作,其中foo是填充'out'數組的函數。 但是對於數據中心對象中的每個數據中心,推出的數組將被新值覆蓋。數組以前的值在angularjs中被覆蓋
我想防止這種覆蓋。 如何在循環中創建新的數組引用/實例?
_.map(datacenters, function(datacenter){
var out = []
foo(datacenter, out);
$scope.dcSelected.push(out);
});
我正在嘗試執行以下操作,其中foo是填充'out'數組的函數。 但是對於數據中心對象中的每個數據中心,推出的數組將被新值覆蓋。數組以前的值在angularjs中被覆蓋
我想防止這種覆蓋。 如何在循環中創建新的數組引用/實例?
_.map(datacenters, function(datacenter){
var out = []
foo(datacenter, out);
$scope.dcSelected.push(out);
});
你有2種選擇:
1)創建一個封閉
2)創建另一個陣列控制器的一部分,將存儲的數據中心,並進行一系列聯動,把它想象作爲一個關鍵,價值,但在同一個控制器的全局變量。
您可以嘗試angularJs的angular.copy(out)。希望它會爲你
_.map(datacenters, function(datacenter){
var out = []
foo(datacenter, out);
$scope.dcSelected.push(angular.copy(out));
});
嘗試添加對象。但仍然覆蓋以前的值。 –
因爲數組引用由foo函數返回,所以值越來越重複覆蓋。您應該將代碼移動到foo函數中的範圍變量$ scope.dcSelected.push(foo函數中的本地變量)中推送數據,而不是絕對地爲您工作。 –
在外面工作把你的out
聲明:
var out = [];
_.map(datacenters, function(datacenter){
foo(datacenter, out);
$scope.dcSelected.push(out);
});
我認爲這是主要原因,加上一個! –
試過這個。但無法解決問題。 –
@SanketAchari你可以在控制檯上記錄結果嗎? –
我不完全明白你想要做什麼,所以我會做一個普通的例子:
var datacenters = [1,2,3,4]
var out = []
datacenters.map(function(datacenter){
datacenter2 = datacenter + 1;
out.push(datacenter2);
});
console.log(out);
[2,3,4,5]
(我用這種方式,因爲我沒有爲js導入下劃線)
'foo()'具體做什麼?請顯示代碼。 –
foo向out.push(obj1),out.push(obj2),out.push(obj3)等 –