2016-10-27 2 views
0

sein Ich verwende Ember 2.4.2Ember überschrieben Modelleigenschaft nicht serialisiert

app/models/product.js 
export default DS.Model.extend({ 
    type: attr('string'), 
    color: attr('string') 
}); 

app/models/blue-bags.js 
export default Product.extend({ 
    type: Ember.computed('color', function() { 
     if (this.get('color') === 'blue') { 
      return 'bag'; 
     } 
     return ''; 
    }) 
}); 

Die Form, dass diese Eigenschaften in verwendet werden, die Art zeigen wird auf ‚Tasche‘, wenn die Farbe ist blau, aber Senden dieser Daten an den Server nicht (ja Farbe war blau beim Senden von Daten an den Server).

Ist dies der richtige Weg, Eigenschaften eines Modells zu überschreiben?

+0

Nur mit 'attr' definierte Eigenschaften werden serialisiert, deshalb wird der CP nicht. Sie brauchen einen anderen Ansatz hier: \ – locks

+1

@locks Danke für das Wissen, ich arbeitete um ihn herum mit einem Beobachter :) – a7omiton

Antwort

0

Die Lösung bestand darin, einen Beobachter im Modell zu erstellen, anstatt die Eigenschaft zu überschreiben, da @lock nur die mit attr definierten Eigenschaften an Ihren Serialisierer übergab (da es eine Serialisierungsmethode hat).

colorChanged: Ember.observer('color', function() { 
    if (this.get('color') === 'blue') { 
     this.set('product_type', 'bag'); 
    } 
}) 
Verwandte Themen