指令回调函数未从$watch内部启动

directive callback function not firing from inside $watch

本文关键字:watch 内部 启动 回调 函数 指令      更新时间:2023-09-26

我创建了一个角度指令,该指令将回调函数作为属性接收。

<my-dir ng-model="foo.bar" on-change="func(data)"></my-dir>

在指令的定义中,我将此属性分配如下

scope: {onChange: '&onChange'}

现在,在我的链接函数中,如果我调用scope.onChange({data:23})一切都很好。但如果我在$watch函数中进行同样的调用,它就会失败。

scope.$watch("stepId", function(newValue, oldValue) {
    scope.onChange({data: 23}); //why it does NOT work ????
})

也许不应该关注"stepId",而应该关注函数返回值。

    scope.$watch( function(){ return scope.stepId; }, function( newValue, oldValue){
        if( typeof newValue == 'undefined' )
            return;
        scope.onChange( {data: scope.stepId});
    });

你最好做个小提琴。

在应用程序或指令的范围内声明stepId,否则$watch将不会监听您的变量