我正试图在指令内部的值从外部变化时看起来它对任何一个范围都不起作用。$ watch或attrs。$ observe。
我有一个小提琴here。
angular.module('zippyModule', [])
.directive('elem', function(){
return {
restrict: 'E',
transclude:true,
template:"Directive: <span ng-repeat='i in values'>{{i}} </span>",
scope: { values:'=zippyTitle' },
link: function(scope, element, attrs) {
attrs.$observe ('zippyTitle',function(newValue){
console.log (scope.values);
});
scope.$watch ('values',function(newValue){
console.log (scope.values);
});
}
}
});
答案 0 :(得分:2)
如果你想观看数组的内容(而不是它的引用),你需要通过将true
作为$watch
方法的最后一个参数传递给深度观察:
scope.$watch ('values',function(newValue){
console.log (scope.values);
}, true);
使用最新的AngularJS(1.1.4),事情变得容易一些,因为有一个专门为集合的浅表元素创建的新方法(scope.$watchCollection
):
http://code.angularjs.org/1.1.4/docs/api/ng.$rootScope.Scope#$watchCollection