我有一个需要在后端表示的数据属性,如下所示
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!有人知道怎么解决这个问题吗?谢谢!
发布于 2016-04-02 09:49:02
我相信这是因为Angular的脏检查。在每个摘要循环期间,Angular会检查blog._publish_at的当前值是否等于前一个循环中的值,并且因为您使用的是一个ES5获取函数(每次访问该属性时都会调用该函数),所以Angular会在每个摘要循环中看到一个新的Date对象,并因此认为该值正在发生变化。
您可能需要考虑将此特定属性的getter/setter逻辑从模型实例移动到您的视图(控制器/指令),在这种情况下放弃使用ES5 getter/setter。
https://stackoverflow.com/questions/35121168
复制相似问题