为什么监视函数的Angular Js参数应该是范围变量?

时间:2013-02-18 08:28:43

标签: angularjs

$scope.myFunc = function(privilege){ 

    $scope.check = function(privilege){
       return ...
    };  

    $scope.$watch('check(privilege)',function(val){
        ...
    }    
}

我的权限变量在每次手表检查时都是未定义的(必须不是)?为什么我应该定义范围变量,或者我对Angular Js有什么想法?

1 个答案:

答案 0 :(得分:6)

$watch方法的第一个参数(“watchExpression”)可以是Angular字符串表达式(根据$ scope计算),也可以是函数,使用$ scope作为第一个调用参数。无法将privilege作为第一个参数传递给作为函数的watchExpression。

如果您不想在$ scope上存储privilege值,则可以创建闭包。有关示例,请参阅Vojta's fiddle。 另请参阅https://groups.google.com/forum/#!msg/angular/UJRxn_Y0Dd4/9ha38PC3PCwJ