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.$watch$scope(而不是包裹在)定义那样,watchingFUnction()它一直在监视$ scope。$ watch的watchExpression

如果是这样的话,是否有任何创造性的事情可以做,返回从值watchExpression这需要外部参数,而不是明确声明中的对象$scope.$watchwatchExpression

谢谢一堆!

编辑更加清晰—每当当前作用域上的值发生更改时,我都会使用来将$scope.$watch其创建$scope.$broadcast到另一个作用域。

克里斯·雅克利克(Chris Jaklik)

由于$scope.$watch 文档状态watchExpression被多次调用(即使在一个摘要循环中也是如此),但是如果在那儿传递了对象,然后将该对象更改为另一个,则它将无法工作。这就是为什么最好传递字符串watchExpression的原因

$scope.$watch('object', function() {...} )

或更改对象内部的内容。

<input type="checkbox" ng-model="object.value" ng-change="changeMyObject()">

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AngularJS $ scope。$ watch对象的属性

angularJS scope。$ watch整个对象

AngularJS $ scope。$ watch选择输入的属性ngModel

如何在AngularJS中使用$ scope。$ watch和$ scope。$ apply?

$ watch JSON Angularjs中的对象

AngularJS:使用$ scope。$ watch与控制器作为语法

AngularJS指令$ scope。$ watch的双向绑定不起作用

angularjs:$ scope。$ watch在forloop中不起作用

AngularJS:$ scope。$ watch互相依赖的两个值

angularjs指令未使用scope。$ watch进行更新

AngularJS FileReader和$ scope。$ watch有问题吗?

属性更新时不会触发$ scope。$ watch

$ watch监视动态创建的对象新属性

将$ scope对象传递给AngularJS中的函数

获取复选框的值到angularjs $ scope对象中

如何在$ scope AngularJS中声明对象

AngularJS $ scope数组对象重新排列

AngularJS监视对象数组中的对象属性

AngularJS 1.5:scope。$ watch内部链接函数不会在模型更改时更新

AngularJS:单元测试控制器返回“ TypeError:$ scope。$ watch不是函数”

输入框为空时angularJS $ scope。$ watch无法正常工作

AngularJS-$ scope。$ watch的机制-仅仅是观察者模式吗?

AngularJS $ scope不监视View的更改

AngularJS $watch 不适用于绑定对象

使用`this。$ watch`代替`$ scope。$ watch`和'Controller As'

AngularJS-必须将变量作为对象属性放入触发的$ watch

AngularJs:通过服务传递$ scope变量

AngularJS:如何初始化$ scope属性

茉莉花AngularJS:模拟$ scope属性?