다른 지침 템플릿 내에서 사용 (의가 B를 부르 자)는 다음과 같이 (A의 그것을 부르 자) 사물. 당신이 볼 수 있듯이
$scope.$on('carousel.keypress', function (event, data) { ... some logic and branching Array.prototype.splice.apply($scope.carouselData, [someIndex, 0].concat(newItems));
, 나는 몇 가지 회전 목마에 새로운 회전 목마 항목을 삽입하고 있습니다 : 지시어 AI에 대한 내 컨트롤러 내부
는carouselData
Array.prototype.splice.apply
을 통해 내가 수정하는 이벤트에 후크가 색인.
<li ng-repeat="item in carouselData">
잘 작동하는 것 같군 :
회전 목마 자체는 리피터 지침이 포함되어 있습니다. 캐 러셀에 새 항목을 삽입하면 HTML 항목의 목록에 새 항목이 표시됩니다.
내가 가지고있는 문제는 carouselData
을보고있는 지시문 B 내의 $watch
이 새 항목을 삽입 할 때 트리거되지 않는다는 것입니다. I 메시지가 표시
$scope.$watch($attrs.items, function(value) { console.log("The elements for the carousel just changed.", value); });
번 페이지가로드 될 때의 몇 가지를 보여 주지만, 새로운 항목이 삽입 될 때 나는 아무것도 얻을 수 없다. 나는 splice
코드를 $timeout
에 배치하려고 시도했으며, $scope.$apply()
을 호출하여 어떤 것이나 nadda가 실행되는지 확인하려고 시도했다.
여기에 무슨 일이 일어 났는지 설명 할 수 있습니까?
다음은 문제의 JSFiddle의 : 콘솔 만에 값이 업데이트됩니다 처음으로 기록됩니다 http://jsfiddle.net/urdjrqvL/
공지 사항 Here happened
있다. $timeout
에서 속성 값이 업데이트되면 항목이 HTML에 표시되지만 $watch
은 실행되지 않습니다.
을 페이지 -에
$ 시계에 대한 자세한 내용은및 $ watchCollection의 correpsonding 섹션을 참조 https://github.com/angular/angular를 참조하십시오. js/wiki/Understanding-Scopes, plunker 또는 fiddle을 만들 수 있다면 정확히 무슨 일이 일어나는지 볼 수 있습니다. – JoseM
안녕하세요 JoseM, 문제를 시연하는 JSFiddle로 질문을 업데이트했습니다. –