AngularJS - 将$对象的对象/对象属性传递给$ scope。$ watch
深入关注大型对象的性能杀手 - 所以我希望能够将动态对象/属性传递到参数watchExpression
$ scope。$ watch函数,每当你调用一个改变该特定对象或属性的动作。
我也有一堆不同的物体,不想为所有物体设置手表。
例如:
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
定义$scope.$watch
(而不是包裹watchingFUnction()
里面不断地看$范围。$手表的watchExpression
?
如果是这样的话,是否有任何创造性的事情可以做,返回从一个值watchExpression
这需要外部参数,而不是显式地声明内$scope.$watch
的watchExpression
对象?
感谢一束!
EDIT附加清晰度 - 我使用$scope.$watch
吨o每当当前范围的值发生更改时,将$scope.$broadcast
的值设置为另一个范围。
由于$scope.$watch
documentation状态watchExpression
被称为多次(即使在一个摘要循环中),但是如果您在那里传递了对象并且您将此对象更改为另一个,那么它将不起作用。这就是为什么传递字符串watchExpression
$scope.$watch('object', function() {...})
或更改什么是内部对象。
<input type="checkbox" ng-model="object.value" ng-change="changeMyObject()">
也许值得在你的文章中明确提到''$ scope。$ watch''也支持嵌套对象监视,也就是''scope.watch('object.nestedobject.property',function(){...} )'' – tiblu
我很困惑。如果你知道某些事情正在改变(比如,用'ng-change'),那么你不需要$ watch。你究竟在努力实现什么?什么是用例? –
好点! - 略微推翻了......: - 我在底部更新了一个编辑问题。谢谢。 –
好的,但现在为什么你需要重新分配观看的表达式? –