如何在未知的父作用域上监视对象

How to watch object on unknown scope parent?

本文关键字:作用域 监视 对象 未知      更新时间:2023-09-26

我正在编写一个可以在其他指令中使用的元素指令。包含directive元素的父元素的结构是未知的。

我的指令需要观察一个名为'modelState'的对象,它位于父作用域树的某个地方。然而,我不能告诉哪个家长,这就是为什么scope.$watch("$parent.modelState", ...);现在将在任何时候工作。

我如何创建这个手表,而不知道我需要的父节点是谁?

在指令代码中创建隔离作用域

yourAngularModule.directive('yourDirective', function() {
    return {
        restrict : 'E',
        scope : {
            yourModelState : '='
        },
        link : function(scope) {
            scope.$watch('yourModelState', function (){
                //do something
            }
        }
    };
});
然后在你的HTML中使用指令
 <your-directive your-model-state="$parent.modelState"><your-directive>

这样你的指令只关心scope.yourModelState