Javascript 委派touchstart事件以单击处理程序

Javascript 委派touchstart事件以单击处理程序,javascript,model-view-controller,mobile,ember.js,handlebars.js,Javascript,Model View Controller,Mobile,Ember.js,Handlebars.js,我想将所有touchstart事件委托给已定义的点击处理程序,作为iPhone和其他“触摸浏览器”的默认设置。我提出了两种方法: 1) 扩展Ember.视图以将所有touchstart事件委派给单击处理程序: 2) 在(把手)模板中指定多个动作事件: <i {{action someAction on="click,touchStart"}} ></i> 这两种方法都不起作用。我错过了什么?实现了Ember.按钮(第18625行)。您使用的是哪个Ember.js

我想将所有touchstart事件委托给已定义的点击处理程序,作为iPhone和其他“触摸浏览器”的默认设置。我提出了两种方法:

1) 扩展Ember.视图以将所有touchstart事件委派给单击处理程序:

2) 在(把手)模板中指定多个动作事件:

  <i {{action someAction on="click,touchStart"}} ></i>


这两种方法都不起作用。我错过了什么?实现了Ember.按钮(第18625行)。

您使用的是哪个Ember.js版本?以下示例适用于最新的Ember.js
v1.0.0-pre2
,请参阅:



通过
注册多个事件无效。如果您想处理多种类型的事件,您应该使用自定义的
Ember.View

谢谢!你的小提琴似乎很好用。Ember.alias是一种新方法吗?我更新了fiddle以允许使用真实设备进行测试。顺便说一句,它在iphone mobile safari上的实际工作情况与预期相符。不,它已经推出一段时间了,可能没有文档记录。但有可用的文档,请参阅
  <i {{action someAction on="click,touchStart"}} ></i>
App = Ember.Application.create({});

Ember.View.reopen({
    touchStart: Ember.alias('click'),
    click: function() {
        console.log('clicki di click OR touchi di touch');
    }
});

Ember.View.create({
    elementId: 'leViewId',
    templateName: 'leViewTemplate'
}).append();

Ember.run.later(function() {
    Ember.$('#leViewId').trigger('touchstart');
}, 500);
Ember.run.later(function() {
    Ember.$('#leViewId').trigger('click');
}, 1000);