因此,由于这个问题,我有了一个不错的removeDialog指令:
Updating attrs value inside directive - how to do it in AngularJS
现在我开始玩isoleted示波器。我注意到的第一件事是添加孤立的作用域破坏了attrs。$ observe。更改触发器后,我没有收到通知。
homesApp.directive("removeDialog", function ($parse) {
return {
scope: {
},
restrict: 'A',
link: function (scope, element, attrs, controller) {
angular.element(element).on('hidden.bs.modal', function () {
scope.$apply(function () {
scope.cancelRemove();
});
});
attrs.$observe('trigger', function (newValue) {
if (newValue) {
angular.element(element).modal('show');
} else {
angular.element(element).modal('hide');
}
});
},
controller: 'DeleteController'
};
});
你能解释为什么吗?
最佳答案
trigger
的内容不再受限于外部范围。您需要在隔离范围中声明它:
scope: {
trigger: '='
}
这会将
scope.trigger
绑定到您在应用指令的元素上定义的实际表达式。这样,
attrs.$observe('trigger', function (newValue) {...}
应该更改为scope.$watch('trigger', function (newValue) {
if (newValue) {
angular.element(element).modal('show');
} else {
angular.element(element).modal('hide');
}
});
关于javascript - 孤立的作用域中断attrs。$ observe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18920155/