2016-04-14 5 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, в основном вы хотите, чтобы объект имел дело со свойством месяца. –

+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); 
    } 
}) 

Everytime свойство month изменения, также beginningOfMonth свойство обновляется.

+0

Проблема мне нужно атрибут 'month' быть обновлен, а также, потому что он идет для сервера. –

Смежные вопросы