灰烬数据模型设定器

时间:2016-04-14 13:18:56

标签: ember.js ember-data

覆盖DS.Model的setter的最简单方法是什么?我有

month: DS.attr('date'),    
monthSetter: function() {
   const rawDate = this.get('month');
   if (rawDate) {
       var start = new Date(rawDate.getFullYear(), rawDate.getMonth(), 1);
       this.set('month', start);
   }
}.observes('month'),

当然,它给出了无限循环。我需要月租房产总是在月初。

2 个答案:

答案 0 :(得分:0)

我会选择Computed property

month: DS.attr('date'),  
beginningOfMonth: Ember.computed("month", function(){
  const rawDate = this.get("month");
  if(rawDate){
   return new Date(rawDate.getFullYear(), rawDate.getMonth(), 1);
  }
})

每当属性month发生变化时,beginningOfMonth属性也会更新。

答案 1 :(得分:0)

您确实应该使用计算属性来处理此问题:

monthObject: Ember.computed('month', {
  get() {
    return this.get('month');
  },
  set(key, val) {
    let value = val;
    if (val) {
      value = new Date(rawDate.getFullYear(), rawDate.getMonth(), 1);
    }
    this.set('month', value);
    return val;
  }
})

在模板中使用monthObject