我想将所有touchstart事件委托给定义的点击处理程序,作为iPhone和其他“Touch-Browsers”的默认设置。我提出了两种方法:
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)在(车把)模板中指定多个动作事件:
<i {{action someAction on="click,touchStart"}} ></i>
这两种方法都不起作用。我错过了什么? Ember.Button已实施similar(第18625行)。
答案 0 :(得分: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);
通过<i {{action someAction on="click,touchStart"}} ></i>
注册多个活动不起作用。如果要处理多种类型的事件,则应使用自定义Ember.View
。