J'essaie de comprendre comment définir une nouvelle valeur d'attribut Ember Data Record en fonction des choix dans un élément select, en utilisant l'assistant {{action}}. Voici ma situation, simplifiée:Ember: définir la valeur de l'attribut avec l'action passée d'un élément <select>
item.js route. Crée un nouvel enregistrement disponible dans le modèle.
model() {
return this.store.createRecord('item');
}
new-item.hbs modèle. L'élément select déclenche l'action pour définir l'attribut de couleur du nouvel élément.
<select {{action 'setColor' model value="target.value" on="change"}}>
<option value="">choose</option>
<option value="white">white</option>
<option value="blue">blue</option>
<option value="red">red</option>
<option value="yellow">yellow</option>
</select>
item.js contrôleur. Console.log (option) ne renvoie rien.
actions: {
setColor(item, option) {
console.log(option);
record.set('color', option);
console.log(item);
}
}
Le fichier record.set fonctionne bien, je peux coder en dur l'option et le fichier console.log (item) montrera que l'objet new item a l'attribut color set.
D'autre part, si je fais l'appel d'action avec juste
onChange={{action 'setColor' value="target.value"}}
la couleur se fait correctement connecté à l'action. Mais si j'ajoute "model" dans cet appel d'action comme précédemment avec la syntaxe {{action ... on = "change"}}, console.log (option) renvoie undefined et console.log (item) renvoie un Event sans objet de modèle attaché.
La question est: Comment puis-je passer à la fois le Target.Value et le modèle à l'action setColor?
En fait 'event' passé comme second argument –
Oui. il est toujours passé comme dernier argument – kumkanillam
Fonctionne parfaitement. Merci beaucoup, bon monsieur. –