嗯,首先,此代碼: <circles data="obj.dataArray"></circles>
似乎錯了,因爲你沒有在你的範圍obj
定義dataArray
任何地方。
所以這個:
function($scope,model,$timeout) {
$scope.obj = {};
model.data[0] = 20;
model.data[1] = 30;
model.data[2] = 40;
model.data[3] = 50;
$timeout(function(){
model.data.push(Math.random()*100);
console.log(model.data);
},1000);
}
也許應該會有一些這樣的:
function($scope,model,$timeout) {
$scope.model = model;
$scope.model.data[0] = 20;
$scope.model.data[1] = 30;
$scope.model.data[2] = 40;
$scope.model.data[3] = 50;
$timeout(function(){
$scope.model.data.push(Math.random()*100);
console.log($scope.model.data);
},1000);
}
這:<circles data="obj.dataArray"></circles>
應該是<circles data="model"></circles>
。
在你的指令
現在,你已經設置了範圍如下:
scope : {
data : '&'
},
但應該是:
scope : {
data : '='
},
,因爲要由數據所代表的對象的引用屬性。 &適用於何時屬性包含要執行的表達式。
因此,通過這些更改,指令中的scope.data現在包含對「commonModel」的引用,因此不再需要指令詢問「commonModel」。然後改變你的$ watch觀看「data.length」來知道何時添加或刪除了項目。
事情是這樣的:http://plnkr.co/edit/sa9blROCm8FFhRQSEWii
真棒,感謝..你們中的一些前面提到的東西實際上是「遺蹟」從我的不同的嘗試。我最初只是在控制器在這個普拉克http://plnkr.co/edit/Y0n0MlwtwYTnWt5S3wd1?p=preview,即力力工作範圍對象試了一下,然後我試圖與服務(你看到有)和即使這不起作用!我嘗試了對該對象的引用(scope.obj.data而不是scope.data),該dint也有幫助。 – ganaraj 2013-02-19 12:19:46
它看起來像固定這實際上是看scope.data.length,而不是看scope.data ......我還是,爲什麼看長篇作品,一邊看物體本身犯規不明確的東西!也許我應該deepwatch設置爲true ......好一個看雖然..感謝名單..因爲他們對每一個消化執行,所以留意data.length – ganaraj 2013-02-19 12:21:11
你的表表達式應該是儘可能快,如果你是好的只有知道何時添加/刪除元素纔有興趣。如果你真的需要對整個數據結構的手錶,你可以通過「真」作爲第三個參數$表,並會告訴角按值而不是按引用觀看。但在你這樣做之前三思,因爲它帶來了性能損失。 – 2013-02-19 12:33:45