3

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

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

 Ember.View.reopen({
      touchStart: function(event) {
         return this.click(event);
      }
 });

 App.SomeView = Ember.View.extend({
      click: function(event) {
         console.log('should be fired for click and touchstart events');
      },          
 });

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

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

两种方法都不起作用。我错过了什么?Ember.Button 的实现方式类似(第 18625 行)。

4

1 回答 1

1

您使用的是什么 Ember.js 版本?以下示例适用于最新的 Ember.js v1.0.0-pre2,请参阅http://jsfiddle.net/pangratz666/3c9bg/

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);

​</p>


通过注册多个事件<i {{action someAction on="click,touchStart"}} ></i>不起作用。如果要处理超过 1 种类型的事件,则应使用自定义Ember.View.

于 2012-10-27T09:02:11.500 回答