因此,我有一个很好的removeDialog指令:
Updating attrs value inside directive - how to do it in AngularJS
现在我开始玩isoleted范围了。我注意到的第一件事是增加孤立的范围打破了。观察。 触发器更改时,我不会收到通知。
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'
};
});
你能详细说明原因吗?
答案 0 :(得分:2)
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');
}
});