在Angular中,如何在我的指令中设置一个在属性值发生变化时触发的监视?

时间:2014-01-04 07:53:02

标签: angularjs

如果我有这样的指令调用:

<mydirective data-pid="data.Id"></mydirective>

JS:

app.directive('mydirective', function ($compile) {    
    return {
        require: 'ngModel',
        link: function ($scope, Element, attrs, ngModel) {

        }
    }
});

然后在我的指令的链接区域中,如果它的值发生变化,我怎么能看到这个属性呢?

1 个答案:

答案 0 :(得分:0)

您可以这样做:

app.directive('mydirective', function($compile) {
    return {
        restrict: 'E',
        scope: {
            pid: '='
        },
        link: function (scope, element, attrs) {
            scope.$watch('pid', function(newValue, oldValue) {
                if (newValue !== oldValue) {
                    console.log('pid changed', newValue);
                }
            });
        }
    }
});

请参阅此演示:Plunker

使用scope: {pid: '='}

  

在本地范围属性和通过attr属性的值定义的名称的父范围属性之间设置双向绑定

引用docs的行。