9

假设我有一个包含多个button元素的模板。如果我想观看一个click事件,那么我只需使用{{action}}助手。但我想不出一种传递其他事件的方法,比如mouseEnteror mouseLeave。我本来想使用Ember.Button并以某种方式完成它,childViews但它似乎已被弃用

模板

{{#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中实现了这种行为,是一个 jsFiddle 演示它的工作原理

编辑:

如果有人也对这个功能感兴趣,讨论会在这里进行。

4

2 回答 2

9

非常好的问题恕我直言。

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

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

于 2012-06-12T07:46:02.503 回答
6

伊利亚...

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

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

于 2012-06-12T16:43:41.320 回答