Ember.js: `{{action (mut propertyName)" newPropertyValue "` tenta atualizar a propriedade errada

Criado em 11 mar. 2016  ·  4Comentários  ·  Fonte: emberjs/ember.js

Conforme documentado em http://emberjs.com/api/classes/Ember.Templates.helpers.html#method_get , deve ser possível usar o mut helper dentro do action helper para atualizar uma propriedade da seguinte forma:

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

No entanto, em vez de atualizar factName , Ember tenta invocar uma ação nomeada após o valor atual de 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.

Não sei se isso é um bug ou se o auxiliar mut nunca foi projetado para funcionar dessa forma.

Caso de teste: http://emberjs.jsbin.com/radogusojex

Comentários muito úteis

Além da solução proposta por @rwjblue , outra forma de resolvê-lo é:

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

Eu editei seu JS Bin para demonstrá-lo: http://emberjs.jsbin.com/qavaki/1

Todos 4 comentários

Eu não acho que a sintaxe de ação de espaço do elemento permite isso, você pode ter que usar ações de fechamento para este comportamento:

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

Bem, nesse caso, a documentação deve refletir isso.

Desculpe por ter sido tão abrupto antes, eu estava falando sobre a implementação (não é o que realmente queremos apoiar). Acho que esse invólucro especial (mut helper, como é feito em outras partes do sistema, parece perfeitamente adequado.

Precisamos decidir um pouco mais holisticamente o que pretendemos como o destino do elemento espaço atuon ...

Além da solução proposta por @rwjblue , outra forma de resolvê-lo é:

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

Eu editei seu JS Bin para demonstrá-lo: http://emberjs.jsbin.com/qavaki/1

Esta página foi útil?
0 / 5 - 0 avaliações