0

Backbone の子/親ビューの複数のレベルから (カスタム) イベントをスロー/キャッチする便利な方法はありますか?

私の状況を説明させてください。「キーダウン」イベントをキャッチして、親レベルで何らかの操作を行う必要があるかどうかを確認しています。そうでない場合は、そのために childView 関数を呼び出しています。私の BaseView は次のようになります。

var BaseView = Backbone.View.extend({

  keydown: function(e){
    return this;
  },

});

childViews の childViews と対話するために他の customEvents をスローしようとしなくなるまで、正常に動作します。ところで、自分自身の存在を知らない。

親がサブビューのすべての子ビューを知らないため、以下のようなことを単純に行うことはできません。私はこのようなことをしようとしています:

例えば。subChildViews 入力をぼかします

Parent.subview.subsubview.trigger('blurInput');

イベントプッシュの「キーダウン」メソッドで間違った方向に進んでいると確信しています。誰かが正しい方向を教えてくれますか?

編集:

生の BackboneJS は実際にはそのようなもののために構築されたものではありませんが、そこにモジュールがあります。MarionetteJSは私のソリューションでした。私が探していたすべてのものを提供してくれます。サブビュー、モジュラー ロジック、および最適化されたクロス ビュー イベント システム。

smashingmagazine.comにはすばらしい入門チュートリアルがあります。

4

1 に答える 1

1

バックボーン フォーム スクラッチには便利な解決策はありません。ネスト ビューが処理されないためです。私があなたにアドバイスできるのは、親がサブビューのすべてを知っているのではなく、親の関係を設定することです(各ビューはそれが親であることを認識します)。ビューがデフォルトでイベントエミッターである限り、おもちゃはこのようなことを行うことができます:

親ビュー:

 var BaseView = Backbone.View.extend({

  keydown: function(e){
    this.trigger("custom.keydown");
    return this;
  },

});

子ビュー:

var ChildView = Backbone.View.extend({

  initialize:function(){
       this.parent.on("custom.keydown",this.keydown,this);
  }

});
于 2013-05-11T12:14:29.580 に答える