2012-06-12 16 views
9

Diciamo che ho un modello con diversi elementi button in esso. Se voglio guardare un evento click, allora uso solo l'helper {{action}}. Ma non riesco a capire un modo per passare altri eventi come mouseEnter o mouseLeave. Avrei pensato di utilizzare Ember.Button e in qualche modo farlo attraverso childViews ma sembra essere deprecated.Ember.js {{action}} a parte clic su

modello

{{#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? 
    } 
});​ 

so che posso usare {{action "btnMouseEnter" on="mouseEnter"}} ma poi ho perso la funzionalità click. Devo eseguire il wrapping di ciascun pulsante nel proprio Ember.View? Se sì, perché è stato deprecato lo Ember.Button?

Edit:

penso che si dovrebbe essere in grado di avere più eventi innescano lo stesso action

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

ho implementato questo comportamento nel mio fork e here è un jsFiddle dimostrando che funziona

Modifica:

se qualcuno è interessato anche a questa funzionalità, la discussione è in corso here.

risposta

9

Ottima domanda IMHO.

L'unico modo che ho trovato è questo: http://jsfiddle.net/Sly7/Zvred/

Penso che sia una sorta di involucro, quindi non so che sia una buona risposta ...

6

Ilia ...

L'Ember il team ha deciso che consentire a più helper di azioni su un elemento come Button non era una buona pratica. La loro raccomandazione è di usare una vista come suggerisce sly7_7. Si prega di rivedere questo rapporto problema su Github:

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

+1

+1 per il collegamento. Peccato che non abbiano spiegato perché hanno scelto di non implementare più azioni di supporto. –

+0

Ho aggiornato la mia domanda. Posso avere un'opinione? –

+0

Penso che avrai le risposte nel problema che hai postato;) –