2016-04-14 95 views
0

什麼是最簡單的方式來覆蓋設置爲DS.Model。我有Ember數據模型設置器

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'), 

,當然,它給出了一個無限循環。我需要月財產始終是月初。

回答

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

+0

嗯,我想沒有其他的方式了...順便說一句,我想你的意思是'this.get(val)'而不是'this.get('month')'。無論如何,謝謝! –

+0

no'this.get('month')'在getter中沒有val,基本上你想要對象處理你的month屬性 –

+0

我的意思是setter :) –

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屬性得到更新。

+0

問題是我需要的屬性'month'要被更新,因爲它去到服務器後端。 –