음, 첫째,이 코드 : 당신이 당신의 범위 obj
의 아무 곳이나 dataArray
를 정의하지 않기 때문에 <circles data="obj.dataArray"></circles>
잘못된 것 같습니다.
그래서이 :
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, dint dint work, 그 다음에 나는 (당신이 보았던) 서비스로 시도했다. 심지어 그것이 작동하지 않았다 !! 그 object (scope.data 대신에 scope.obj.data)에 대한 참조를 시도했는데 그 도움도 도움이됩니다. – ganaraj
이것은 scope.data를 보지 않고 실제로 scope.data.length를보고있는 것을 고정시킨 것처럼 보입니다 ... 왜 객체 자체가 나던지를 보면서 길이를 보는 것이 왜 명확하지 않은지 !!! 어쩌면 나는 deepwatch를 true로 설정해야한다. good ... 그래도 .. 고맙습니다. – ganaraj
시계 표현은 모든 다이제스트에 대해 실행되기 때문에되도록 빨리해야합니다. 그렇다면 data.length를 관찰하는 것이 좋습니다. 요소 추가/제거시기를 아는 데에만 관심이 있습니다. 전체 데이터 구조에 대한 감시가 정말로 필요한 경우 $ watch에 대한 세 번째 인수로 "true"를 전달할 수 있습니다.이 값을 설정하면 참조가 아닌 값으로보고하도록 Angular에 지시합니다. 하지만 성능 페널티가 있기 때문에 두 번 생각하십시오. –