我有一个 DTO 对象,它有一个 Date 参数。我将此 Dto 包装在一个 View 模型对象中,然后我将其属性在我的 View 中绑定(bind)到一个标签。
<label class="form-control">{{controller.ViewModel.Date}}</label>
因此在 View 模型中我有一个 getter。 (我正在使用 TypeScript)
public get Date(): Date {
return new Date(Date.parse(this.dto.Date));
//return moment(this.dto.Date).toDate();
}
发出的 JavaScript:
Object.defineProperty(ViewModel.prototype, "Date", {
get: function () {
return new Date(Date.parse(this.dto.Date));
},
enumerable: true,
configurable: true
});
我相信原因是因为我在 getter 和 Angular 中创建了一个新的 Date 认为这意味着日期总是新的并且它一直在获取日期直到模型稳定,从而导致无限循环。
angular 为什么要这样做?
为什么一直在调用getter,只调用一次有什么问题吗?
我可以告诉 Angular 只调用一次 getter 并接受它给定的值吗?
最佳答案
如果您的版本足够高,您可以尝试一次性绑定(bind)。 按照此处的说明进行操作:https://docs.angularjs.org/guide/expression#one-time-binding
您的假设基本上是正确的,即 Angular 认为日期总是新的。您正在通过 getter 中的评估更改值,angular 的脏检查和监视触发另一个摘要。
您是否也可以尝试提前解析日期?
关于javascript - 为什么angularjs Digest使用日期获取函数进入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34441287/