AngularJs的自定义指令在$watch的一个控制器中使用了两次



嗨,我有一个控制器,它有一个名为refresh的参数和一个$watch

app.controller (..., []) {
$scope.refresh = false;
$scope.$watch('refresh', function() {
if(!$scope.refresh) return;
$scope.apiCall(true);

}, true);
}

我有一个使用refresh的指令。

app.directive('dirA', () => {
return {
restricts: E,
scope: {
refresh: '=',
.....
},
templateUrl: 'location of template',
controller: [..., {
function test() {
$scope.refresh = false;
// API call here
fetch('/test', () => {
this.refresh = true;
)}
}
}]
}
})

在我的控制器模板中,我像一样两次使用该指令

<dirA refresh="refresh"/>
<dirA refresh="refresh"/>

我面临的问题是,当refresh从指令的第一个实例更改时,$watch被调用,但从第二个实例并没有发生同样的情况。

我是angularjs的新手,如果可能的话,请帮助

在指令中声明控制器时,还需要使用bindToController绑定指令的隔离作用域。

这是一篇解释bindToController的文章

我还花了一些时间编写了一个plunkr,用您提供的代码演示了它的外观。

最新更新