我有一个数据属性需要在后端像这样
表示YYYY-MM-DD
然而,角度材料日期选择器需要一个日期对象。所以我认为我只会使用一个属性。但是,当我创建一个属性时,它会导致无限递归。
我的JSData模型看起来像这样。
function BlogFactory (DS) {
return DS.defineResource({
name: 'Blog',
endpoint: 'blog',
idAttribute: 'slug',
computed: {
_publish_at: {
enumerable: true,
get: () => {
if (this.publish_at) {
return moment(this.publish_at).toDate();
}
},
set: (v) => {
this.publish_at = moment(v).format('YYYY-MM-DD');
}
}
}
});
}
我的HTML看起来像这样。博客是博客对象。
<md-datepicker ng-model="blog._publish_at"
ng-model-options="{'getterSetter': true}"></md-datepicker>
导致此错误。
[$rootScope:infdig] 10 $digest() iterations reached. Aborting!
有谁知道如何解决这个问题?谢谢!
答案 0 :(得分:0)
我相信这是因为Angular的脏检查。在每个摘要循环期间,Angular检查blog._publish_at
的当前值是否等于前一循环的值,并且因为您正在使用ES5 getter函数,每次访问该属性时都会调用该函数,Angular会看到每个摘要循环中的新Date对象,因此认为值正在改变。
您可能需要考虑将此特定属性的getter / setter逻辑从模型实例移动到View(您的控制器/指令),并在此实例中放弃使用ES5 getter / setter。