AngularJS在数据更改时重新计算“嵌套”函数
AngularJS recalculate "nested" functions on data change
可能有
解决方案,但我似乎找不到它,或者如果我已经找到了它,我无法理解它。我有一个AngularJS应用程序,有以下设置:
在视图中:
<button ng-click="data=data+1"></button>
<div>{{getValue("something")}}</div>
<div>{{getAnotherValue("anotherThing")}}</div>
在控制器中:
$scope.getValue=function(param){
return param+$scope.otherValues+$scope.data;
}
$scope.getAnotherValue=function(param){
return param+$scope.evenOtherValues+$scope.getValue("someOtherParam");
}
当我单击该按钮时,"getValue()"函数会自动重新计算,但"getOtherValue()"不会重新计算。有没有办法重新计算数据更改影响的所有内容,即使在这种嵌套(甚至更多嵌套)的情况下?
你确定getAnotherValue()
没有更新吗?我自己设置了一个小提琴,它确实更新了。
事实上,angular 将通过向它们添加 $watch(观察者跟踪表达式)来确保绑定到 UI(DOM) 的数据正确呈现。
每当有变化时,就会有一个摘要周期,在这个周期中,angular将遍历所有观察者并检查所监视的数据是否发生了变化(如果它是一个函数,则通过重新计算它)。
对于任何观察者,如果值已更改,angular 将再次重复检查过程,直到所有观察者报告他们正在监视的值没有变化。
如果我们分步骤编写过程:
1.启动摘要周期
2.逐个询问观察者是否有任何价值变化
3.如果任何观察程序报告有更改,请返回步骤 1
4.如果未报告更改,请完成摘要周期并更新 UI。
但是,可能存在例外,即存在过于复杂和嵌套的观察程序或任何观察程序循环,这将导致角度达到最大摘要周期数(默认值为 10)。Angular 将中断摘要过程,在这种情况下将引发异常。
相关文章:
- 用嵌套函数和默认函数定义函数
- 计算表单中的嵌套字段集
- 在嵌套在 for 循环 (JavaScript/jQuery) 中的 switch 语句中计算 jQuery 数组的元素
- 如何计算嵌套 JSON 的长度
- 嵌套函数中变量的值在定义时计算,而不是在调用时计算
- 多个嵌套if语句未进行计算
- 以角度计算多个嵌套循环的总和
- Handlebars.js自定义帮助程序来计算嵌套元素
- 使用(ES6)计算的属性名称更新嵌套对象
- AngularJS我正在尝试计算嵌套ng重复中包含的许多输入(ng模型)的结果
- Ember.js计算嵌套关系的属性
- 困惑,循环遍历嵌套对象和做特定的计算
- 计算嵌套js对象中项目的长度
- 如何在单击事件时计算嵌套元素到其父元素的位置
- 如何使用angular.forEach计算嵌套对象的值
- Ember计算属性绑定到深度嵌套属性时不会触发
- 在Ember.js中计算嵌套对象的属性
- for循环-计算嵌套对象数组的平均值-JavaScript
- AngularJS在数据更改时重新计算“嵌套”函数
- 如何使用Underscore JS计算嵌套JSON中的总和