2014-08-28 16 views
6

Können Parameter wie diese übergeben werden? Ich muss einige Informationen weitergeben, die nicht Teil des Modells selbst sind.Übergeben von Parametern zum Speichern()

myModel.save({site : 23}) 
+0

Wo Seite her? Sind es Metadaten? Wird es auf dem Controller bearbeitet? Wie kommt es, es ist nicht auf dem Modell definiert – IgorT

+0

@IgorT die Website repräsentiert die vorherige Seite des Modells. Ich habe auch andere Gründe dafür, ich benutze ein Java/Spring-Backend und das Übergeben von Params erlaubt es mir, zwischen Zielspeichermethoden zu unterscheiden. – jax

+0

@IgorT Ich habe die gleichen Bedürfnisse: einige kontextabhängige Parameter werden vom Backend benötigt ... –

Antwort

9

Es ist möglich, wenn Sie:

  • einen 'flüchtigen' Attribut hinzufügen, um Ihr Modell,
  • einen Serializer benutzerdefinierten Modell definieren, und überschreiben seine serializeIntoHash Methode.

Zum Beispiel:

App.Model = DS.Model.extend({ 
    //... 
    site: DS.attr('number', { serialize: false }) 
}); 
App.ModelSerializer = DS.RESTSerializer.extend({ 

    serializeIntoHash: function(hash, type, record, options) { 
    this._super(hash, type, record, options); 

    Ember.merge(hash, { 
     'site': record.get('site') 
    }); 
    } 
}); 

Sehen Sie diese comment, das ist der richtige Weg, um Ihr Ziel zu erreichen.

17

You can pass options as of Ember Data 2.2. Sie müssen jedoch daran denken, Ihre Optionen unter der adapterOptions Eigenschaft zu übergeben. Zum Beispiel

myModel.save({ 
    adapterOptions: { 
    site: 23 
    } 
}); 

Innerhalb entweder von DS.Store#findAll, DS.Store#findRecord, DS.Store#query, DS.Model#save und DS.Model#destroyRecord, einer der Parameter jetzt sollte adapterOptions haben. Im Fall von DS.Model#save können Sie updateRecord in Ihrem Adapter außer Kraft setzen:

export default DS.Adapter.extend({ 
    updateRecord(store, type, snapshot) { 
    // will now have `snapshot.adapterOptions`. 
    // ... 
    } 
}); 
+0

Genau das, was ich brauchte. Vielen Dank –

Verwandte Themen