在大型对象上深入观察性能杀手 - 所以我希望能够将动态对象/属性传递到$ scope。$ watch函数的watchExpression
参数,无论何时调用更改该特定对象或属性的操作。
我也有很多不同的物品,并且不想为所有物品设置手表。
例如:
var watchingFunction = function (objectToBeWatched) {
$scope.$watch(function (objectToBeWatched) {return objectToBeWatched;}, function(newValue, oldValue) {
if (newValue !== oldValue) {...};
}, true);
$scope.object = true;
$scope.changeMyObject = watchingFunction(object);
HTML
<input type="checkbox" ng-model="object" ng-change="changeMyObject()">
我认为这不起作用,因为调用函数watchingFunction()
只运行一次$scope.$watch()
?就好像你在$scope.$watch
上定义$scope
一样(而不是包裹在watchingFUnction()
内,它会不断地关注$ scope。$ watch&#39; s watchExpression
?
如果是这种情况,您是否可以执行任何创造性的操作来从watchExpression
返回一个值,该值采用外部参数,而不是在$scope.$watch
&#39; s {watchExpression
{1}}?
非常感谢!
编辑其他清晰度 - 我每次使用当前范围的值更改时$scope.$watch
使$scope.$broadcast
到另一个范围。
答案 0 :(得分:1)
由于$scope.$watch
documentation状态watchExpression
被多次调用(即使在一个摘要周期中),但是如果你在那里传递了对象而你将这个对象更改为另一个,那么它将无法工作。这就是为什么最好传递字符串watchExpression
$scope.$watch('object', function() {...} )
或更改对象内部的内容。
<input type="checkbox" ng-model="object.value" ng-change="changeMyObject()">