嗨,我有一个控制器,它有一个名为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,用您提供的代码演示了它的外观。