我正在研究AngularJs应用程序,当我试图在指令的链接函数中监视控制器范围属性时,我有一个令人困惑的问题
以下是问题的最小示例
HTML
<div fc-loading="filterBox"></div>
控制器
angular.module('myApp').controller('myctrl', function ($scope) {
$scope.filterBox = false;
setInterval(function () {
$scope.filterBox = !$scope.filterBox;
},2000)
}
指令
angular.module('myApp').directive('fcLoading', function () {
return{
scope:{
fcLoading:'='
},
link: function (scope,ele,attrs) {
scope.$watch(scope[attrs.fcLoading],function(newValue, oldValue){
console.log(newValue)
}
}
提前致谢!
答案 0 :(得分:2)
AngularJs指令范围&#39; =&#39; 方法允许您在指令中使用 2种方式绑定,并且只能观看指令范围变量。像这样
scope.$watch('fcLoading', function(newValue, oldValue){
console.log(newValue);
}, true)
顺便在setInterval函数中调用$ scope。$ apply()或使用$ interval
答案 1 :(得分:1)
您应该只能看到您在此处放置范围的价值:
scope:{
fcLoading:'='
},
在你的链接功能中这样:
scope.$watch(scope.fcLoading, function(newValue, oldValue){
console.log(newValue);
}