从指令链接功能监视控制器范围

时间:2016-05-03 15:02:38

标签: javascript angularjs angularjs-directive angularjs-scope

我正在研究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)
        }
     }

提前致谢!

2 个答案:

答案 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);
}