Est-il possible d'accéder au modèle de route dans l'action de route?
Je passe plusieurs objets dans un modèle de route à un modèle,
model: function() {
return {
employeeList : this.store.findAll("employee"),
employee : Ember.Object.create()
}
}
À partir de l’action route, je souhaite modifier le modèle d’itinéraire. J'ai essayé ce qui suit, mais je ne reçois pas l'objet.
actions:{
editAction : function(id) {
var emp = this.get("model");
console.log(emp.employee);
}
}
Quelqu'un peut-il donner une solution pour obtenir et modifier un objet modèle (employé)?
Le premier problème est que vous devez retourner une promesse du crochet modèle. De cette façon, la transition attendra la promesse de résolution. return { /*...*/};
renvoie un objet et non une promesse, même si l'objet contient des promesses. La solution consiste à utiliser Ember.RSVP.hash
comme:
model() {
return Ember.RSVP.hash({
employeeList: this.store.findAll('employee'),
employee: Ember.Object.create()
});
}
Cela retournera une promesse qui se résoudra lorsque toutes les promesses intérieures seront résolues.
Le deuxième problème est que vous ne pouvez pas utiliser this.get('model')
dans un itinéraire. Si vous y réfléchissez, la propriété model
est le crochet lui-même et non le modèle résolu. Solutions:
this.modelFor(this.routeName);
renvoie le modèle pour l'itinéraire actuel.this.controller.get('model')
.this.set('employeeModel', model);
pour un accès ultérieur.this.get('context')
vous donne accès au modèle dans l’action route.