まず、このコード:
スコープ内のどこに<circles data="obj.dataArray"></circles>
も定義していないため、間違っているようです。dataArray
obj
したがって、この:
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 : '='
},
data 属性で表されるオブジェクトへの参照が必要なためです。& は、属性に実行したい式が含まれている場合に使用します。
これらの変更により、ディレクティブの scope.data に「commonModel」への参照が含まれるようになったため、ディレクティブで「commonModel」を要求する必要がなくなりました。次に、$watch を "data.length" で監視するように変更して、アイテムがいつ追加または削除されたかを確認します。
このようなもの: http://plnkr.co/edit/sa9blROCm8FFhRQSEWii