2013-02-18 46 views
2
$scope.myFunc = function(privilege){ 

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

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

我的特权变量在每次手表检查时都变得不确定(哪一个不能)?为什么我应该定义它的范围变量,或者我错过了Angular Js的任何东西?为什么Watch函数的角度Js参数应该是范围变量?

回答

6

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

如果您不想在$ scope中存储privilege值,您可以创建一个闭包。一个例子见Vojta's fiddle。 另请参见https://groups.google.com/forum/#!msg/angular/UJRxn_Y0Dd4/9ha38PC3PCwJ