2
$scope.myFunc = function(privilege){ 

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

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

我的特权变量在每次手表检查时都变得未定义(不能是)?为什么我应该定义它的范围变量或者我错过了Angular Js的任何东西?

4

1 回答 1

6

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

如果您不想将privilege值存储在 $scope 上,您可以创建一个闭包。例如,请参阅Vojta 的小提琴。另请参阅https://groups.google.com/forum/#!msg/angular/UJRxn_Y0Dd4/9ha38PC3PCwJ

于 2013-02-19T15:23:12.147 回答