1

私は非常に奇妙で苛立たしい問題を抱えています - backbone.js アプリのビューに .click() イベントを書きました (初めて書きました)。すべてのデスクトップ ブラウザーで正常に起動しますが、起動しません。 iPadで作業します。

コードは次のようになります。

if (something) {
 $('a.link').click();
} else {
  // do something else
}

なぜそれが起こっているのか分かりません。私は backbone.js を使用しています。backbone.touch.js を使用しています。私はこれで何時間も壁に頭をぶつけてきました。誰でも助けることができますか?

4

1 に答える 1

3

クリックをシミュレートする代わりに、カスタム イベントを使用してみてください。

バックボーン オブジェクトでカスタム イベントを発生させるには、それをトリガーするだけです。たとえば、モデルでは次のようになります。

this.trigger('click:navitem');

次に、これらのイベントをリッスンしている場所、たとえばそのモデルに関連付けられたビューで:

this.listenTo(this.model, 'click:navitem', doFunc);

ここで、doFunc はハンドラーの名前です。

これがjsfiddleのデモです。この例は不自然なので、アプリケーションの構造と一致しない場合がありますが、重要なのは、カスタム イベントの発生とリッスンを示すことです。この例では、すべてを同じビューで実行しましたが、イベントをリッスンしている場所でイベントの発信元を参照できる限り、イベントが発生する場所の発信元はモデルまたはコレクションにすることができます。これは基本的に、バックボーンの pub/sub の実装であり、もちろん、jquery、pubsub、またはその他のさまざまなライブラリを使用してバックボーンの外部で実装できますが、これはバックボーンから無料で入手できます。

于 2013-03-08T22:15:02.680 に答える