gpt4 book ai didi

javascript - 隔离范围破坏了 attrs.$observe

转载 作者:行者123 更新时间:2023-12-02 18:20:00 26 4
gpt4 key购买 nike

因此,由于这个问题,我有了很好的removeDialog指令:

Updating attrs value inside directive - how to do it in AngularJS

现在我开始使用隔离范围。我注意到的第一件事是添加隔离范围破坏了 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 的内容不再绑定(bind)到外部作用域。您需要在隔离范围中声明它:

scope: {
trigger: '='
}

这会将 scope.trigger 绑定(bind)到您在应用指令的元素上定义的实际表达式。

这样,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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com