2012-06-10 31 views
3

我之前没有使用过Ember.js,但是在阅读guide on views的部分内容之后,我想知道Ember专家如何处理需要将多个本地事件映射到同一个“应用程序事件”的情况。将多个本地事件映射到Ember.js中的语义应用程序事件?

在本指南中,给出的示例显示了将(本地)单击事件映射到(特定于应用程序的)deleteItem事件。在许多情况下,许多本地事件通常映射到一个特定于应用程序的事件。如果用户使用的触摸设备还附带了键盘和鼠标(例如即将推出的Windows 8平板电脑),并且需要映射“touchstart”,“click”和“keyup”(例如[CTRL]-D)事件到像deleteItem一样的应用程序特定事件?

你只是把3种方法放在视图上 - touchStart,click和KeyUp - 让他们都调用普通的第四种方法发送deleteItem事件?

Ember中是否有任何内容来处理这种情况 - 具体来说,多个本地事件在应用程序中都具有相同的语义含义?我认为这将变得越来越普遍,因为浏览器启用触摸,笔记本电脑支持触摸,浏览器API可以接受来自其他硬件(如麦克风,相机等)的输入...我可以想象一个设备,其中5或6个本地事件全部对于给定的视图具有相同的语义含义。

谢谢!

+0

我会微创认为你会希望对所有回调使用相同的处理程序来完成相同的任务。在某些情况下,您可能有责任将职责分解为不同的处理程序,但总的来说,我将在所有具有相同要求的事件中共享相同的处理程序。 –

+0

对,我就是这样处理的 - 我只是想知道为了减少重复代码的一些优化和/或通用技术已经内置到Ember中了... –

回答

2

我们一直在谈论类似于支持“点按”事件的内容。

我认为最好的方法是使用注册jQuery的'特殊事件'。这里有一个链接的详细信息:http://benalman.com/news/2010/03/jquery-special-events/

为了与Ember美景的特殊事件的工作,你需要将它注册为自定义事件对你Ember.Application实例:

Ember.Application.create({ 
    customEvents: { 
    // key is the jquery event, value is the name used in views 
    myeventname: 'myEventName' 
    } 
}); 
+0

你能解释更多吗?也许一个简单的代码示例将清楚说明这是如何工作的。 – nicholaides

相关问题