2012-06-12 15 views
9

Digamos que tengo una plantilla con varios elementos button en ella. Si quiero ver un evento click entonces solo uso el asistente {{action}}. Pero no puedo encontrar una manera de pasar otros eventos como mouseEnter o mouseLeave. Hubiera pensado usar Ember.Button y de alguna manera hacerlo a través de childViews pero parece ser deprecated.Ember.js {{action}} aparte de

plantilla

{{#view App.MyView}} 
    <button {{action "btnClicked"}}>button1</button> 
    <button {{action "btnClicked"}}>button2</button> 
{{/view}} 

js

App.MyView = Em.View.extend({ 
    btnClicked: function(e){ 
     alert('btnClicked'); 
    }, 
    btnMouseEnter: function(e){ 
     alert('btnMouseEnter'); // how to call this? 
    } 
});​ 

sé que puedo usar {{action "btnMouseEnter" on="mouseEnter"}} pero luego pierden la funcionalidad clic. ¿Debo ajustar cada botón en su propio Ember.View? Si es así, ¿por qué se desaprobó Ember.Button?

Editar:

Creo que debe ser capaz de tener múltiples acontecimientos desencadenan la misma action

<button {{action "myAction" on="click mouseEnter mouseLeave"}}>button</button> 

he implementado este comportamiento en mi fork y here es un jsFiddle demostrando que funcione

Editar:

si a alguien también le interesa esta funcionalidad, la discusión continúa here.

Respuesta

9

Muy buena pregunta en mi humilde opinión.

La única manera que he encontrado es ésta: http://jsfiddle.net/Sly7/Zvred/

Creo que es una especie de envoltura, así que no sé que es una buena respuesta ...

6

Ilia ...

la brasa El equipo decidió que permitir múltiples ayudantes de acción en un elemento como Button no era una buena práctica. Su recomendación es usar una vista como sugiere sly7_7. Por favor revise este informe tema en Github:

https://github.com/emberjs/ember.js/issues/569

+1

+1 para el enlace. Qué lástima que no explicaron por qué eligieron no implementar soporte para múltiples acciones. –

+0

He actualizado mi pregunta. ¿Puedo tener una opinión? –

+0

Creo que tendrá respuestas en el problema que ha publicado;) –