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

Javascript 从指令链接功能监视控制器范围,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我正在处理一个AngularJs应用程序,当我试图查看指令链接函数中的控制器作用域属性时,这里有一个令人困惑的问题 这里是这个问题的一个最小的例子 HTML <div fc-loading="filterBox"></div> 指令 angular.module('myApp').directive('fcLoading', function () { return{ scope:{ fcLoading:'=' }, link:

我正在处理一个AngularJs应用程序,当我试图查看指令链接函数中的控制器作用域属性时,这里有一个令人困惑的问题

这里是这个问题的一个最小的例子

HTML

<div  fc-loading="filterBox"></div>
指令

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)
        }
     }

提前谢谢

您应该能够在此处查看您在范围上施加的值:

scope:{
    fcLoading:'='
},
在您的链接函数中类似于此:

scope.$watch(scope.fcLoading, function(newValue, oldValue){
    console.log(newValue);
}

您应该能够在此处观察您在范围上施加的值:

scope:{
    fcLoading:'='
},
在您的链接函数中类似于此:

scope.$watch(scope.fcLoading, function(newValue, oldValue){
    console.log(newValue);
}

AngularJs指令作用域'='方法允许在指令内部有两种绑定方式,并且只能查看指令作用域变量

scope.$watch('fcLoading', function(newValue, oldValue){
    console.log(newValue);
}, true)

顺便说一句,在setInterval函数中调用$scope.$apply()或使用$interval

AngularJs指令scope
'='方法允许在指令中有两种方式绑定,并且只能查看指令范围变量

scope.$watch('fcLoading', function(newValue, oldValue){
    console.log(newValue);
}, true)


顺便说一句,在setInterval函数中调用$scope.$apply()或使用$interval

谢谢你的回答,但是你的回答有一个语法错误,因为没有定义fcLoading,它应该是'fcLoading',并且在修复这个不幸的范围后它不起作用。fcLoading是一个值,在我的例子中等于false,watch应该在属性名称上工作,而不是在值上工作感谢您的回复,但您的回答有语法错误,因为没有定义fcLoading,它应该是“fcLoading”,并且在修复此不幸的范围后它不工作。fcLoading是某个值,在我的情况下等于false,watch应该在属性名称上工作,而不是在值上。请澄清:您试图监视的变量是什么。您是否正在尝试查看fcLoading变量,或者您正在尝试监视一个名为attrs.fcLoading中任何字符串的变量?attrs.fcLoading相当于控制器
$scope.filterBox范围内属性的名称filterBox。我正在使用属性来隔离范围请澄清:您试图监视的是什么变量。您是否正在尝试查看fcLoading变量,或者您正在尝试观察一个变量,该变量的名称为attrs.fcLoading中的任何字符串?attrs.fcLoading相当于filterBox,它是controller
$scope.filterBox范围内属性的名称。我使用这些属性只是隔离作用域非常感谢,但这将始终返回一个
未定义
未定义?为什么?如果您的指令在控制器内部,然后每次更改$watch函数都会被捕获,因为我要监视的属性的名称是
$scope.filterBox
而不是
$scope.fcLoading
请查看我的控制器ooo。我只是说。2种方式绑定允许您使用$scope.fcLoading如果使用setInterval,您必须调用$scope。$apply()或者您可以使用$interval(作为角度样式,不需要$apply()函数),非常感谢,但这将始终返回一个
undefined
undefined?为什么?如果您的指令在控制器内部,然后每次更改$watch函数都会被捕获,因为我要监视的属性的名称是
$scope.filterBox
而不是
$scope.fcLoading
请查看我的控制器ooo。我只是说。2种方式绑定允许您使用$scope.fcLoading如果使用setInterval,您必须调用$scope。$apply()或者可以使用$interval(作为角度样式,不需要$apply()函数)