Ember.js: `{{action (mut propertyName) "newPropertyValue"` tente de mettre à jour la mauvaise propriété

Créé le 11 mars 2016  ·  4Commentaires  ·  Source: emberjs/ember.js

Comme documenté dans http://emberjs.com/api/classes/Ember.Templates.helpers.html#method_get , il devrait être possible d'utiliser l'assistant mut dans l'assistant action pour mettre à jour une propriété comme suit :

<!-- factName is set to "height" and should be changed to "weight" -->
<button {{action (mut factName) "weight"}}>Show weight</button>

Cependant, au lieu de mettre factName jour factName :

error Script error. (line 0)
ember.debug.js:44562 Uncaught Error: Nothing handled the action 'height'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble.

Je ne sais pas s'il s'agit d'un bogue ou si l'assistant mut n'a jamais été conçu pour fonctionner de cette façon.

Scénario de test : http://emberjs.jsbin.com/radogusojex

Commentaire le plus utile

En plus de la solution proposée par @rwjblue , une autre façon de la résoudre est :

<button {{action (action mut factName) "weight")}}>Show weight</button>

J'ai édité votre JS Bin pour le démontrer : http://emberjs.jsbin.com/qavaki/1

Tous les 4 commentaires

Je ne pense pas que la syntaxe d'action d'espace d'élément le permette, vous devrez peut-être utiliser des actions de fermeture pour ce comportement :

<button onclick={{action (mut factName) "weight"}}>Show weight</button>

Eh bien, dans ce cas, la documentation devrait refléter cela.

Désolé d'avoir été trop brusque avant, je parlais de l'implémentation (pas de ce que nous voulons réellement soutenir). Je pense que le boîtier spécial (mut helper comme cela se fait ailleurs dans le système semble parfaitement bien.

Nous devons décider un peu plus globalement de ce que nous entendons comme destin de l'action spatiale de l'élément...

En plus de la solution proposée par @rwjblue , une autre façon de la résoudre est :

<button {{action (action mut factName) "weight")}}>Show weight</button>

J'ai édité votre JS Bin pour le démontrer : http://emberjs.jsbin.com/qavaki/1

Cette page vous a été utile?
0 / 5 - 0 notes