17

我正在使用 Ember.js,我试图让一个 div 元素具有两种不同的操作:一种是鼠标进入,另一种是鼠标离开。我试着做:

<div {{action "stopInfo" on="mouseLeave"}} {{action "startInfo" on="mouseEnter"}}>

但它只会触发第一个动作(mouseleave)。

有没有办法对同一个元素进行 2 个操作?谢谢

4

3 回答 3

17

根据问题#569,不支持标签的多个操作助手。要处理多个事件,您应该为此使用自定义Ember.View。在您的情况下,请参阅http://jsfiddle.net/pangratz666/2V9cP/

车把

{{#view App.ActionView}}
    ... content of div ...
{{/view}}

JavaScript

App.ActionView = Ember.View.extend({
    stopInfo: function(evt) { console.log('stop info'); },
    startInfo: function(evt) { console.log('start info'); },

    click: Ember.alias('stopInfo'),
    mouseLeave: Ember.aliasMethod('stopInfo'),

    mouseEnter: Ember.aliasMethod('startInfo')
});​

我在Ember.alias这里使用了帮助程序,只是为了说明如何将相同的函数用于多个视图事件......

于 2012-07-18T15:26:23.317 回答
10

这可能会在下一个版本的 Ember (1.13) 中得到支持。修复它的 PR 在这里:https ://github.com/emberjs/ember.js/pull/11373

于 2015-06-08T15:52:56.353 回答
1

我会为此使用ember-composable-helpers

<button {{action (pipe addToCart purchase redirectToThankYouPage) item}}>
  1-Click Buy
</button>

或者

<button {{action (queue (action "backupData") (action "unsafeOperation") (action "restoreBackup"))}} />
于 2016-09-21T19:43:39.970 回答