3

すべてのタッチスタートイベントを、iPhoneおよびその他の「タッチブラウザ」のデフォルトとして定義されたクリックハンドラに委任したいと思います。私は2つのアプローチを思いついた:

1)Ember.Viewを拡張して、すべてのタッチスタートイベントをクリックハンドラーに委任します。

 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も同様に実装されています(行18625)。

4

1 に答える 1

1

使用しているEmber.jsのバージョンは何ですか?次の例は、最新のEmber.jsで機能します。http ://jsfiddle.net/pangratz666/3c9bg/v1.0.0-pre2を参照してください。

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>ことはできません。複数のタイプのイベントを処理する場合は、カスタムを使用する必要がありますEmber.View

于 2012-10-27T09:02:11.500 に答える