除了点击之外,Ember.js {{action}}

时间:2012-06-12 05:46:02

标签: ember.js

假设我有一个包含多个button元素的模板。如果我想观看click事件,那么我只使用{{action}}帮助器。但我无法找到传递其他事件的方法,例如mouseEntermouseLeave。我原本会考虑使用Ember.Button并通过childViews以某种方式进行,但似乎是deprecated

模板

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

我知道我可以使用{{action "btnMouseEnter" on="mouseEnter"}}但我失去了点击功能。 我是否需要将每个按钮包装在自己的Ember.View中?如果是这样,为什么Ember.Button已被弃用?

修改

我认为你应该能够让多个事件触发相同的action

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

我在fork中实现了这种行为,而here是一个证明其有效的jsFiddle

修改

如果有人对此功能也感兴趣,则讨论将继续进行here

2 个答案:

答案 0 :(得分:9)

非常好的问题恕我直言。

我找到的唯一方法就是这一个:http://jsfiddle.net/Sly7/Zvred/

我认为这是一种包装,所以不确定这是一个很好的答案......

答案 1 :(得分:6)

... IIIa的

Ember团队决定允许像Button这样的元素上的多个动作助手不是最​​佳实践。他们的建议是使用像sly7_7这样的观点。请在Github上查看此问题报告:

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