好吧,首先,这段代码:
<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