1

最近、たくさんの質問がありますが、それらが私の開発ペースを速めているとは言えません。むしろ、不快に感じます。頭を包む必要があります。

素敵な世界のバックボーン ビューでは、基になるモデルに通知し、モデルがイベントをトリガーします。ビューは、イベントへの応答として自身を更新します。

ビューがイベントをトリガーし、別のビューがこのイベントに応答する場合は合法ですか。基礎となるモデルはこれについての手がかりさえないかもしれませんか?

カートがコレクションであると仮定すると、アイテム数とカートの詳細なコンテンツを表示するためのリンクを含む総コストを含むビューと呼ばれるビューがあります。

ユーザーがリンクをクリックすると、ビューがイベントをトリガーしますが、これはコントローラーまたはモデル以外の他の当事者によってキャッチされます。

基礎となるモデルをゲームから除外しますか? 合法?

4

1 に答える 1

4

Backbone の優れた点はその柔軟性であり、特定のアーキテクチャに厳密に従う必要はありません。

したがって、あるビューがイベントをトリガーしても問題はなく、別のビューはモデルを何も変更せずにこのイベントに直接応答します。

ただし、問われる必要があるのは、アーキテクチャを実装する最もクリーンな方法は何かということです。

あなたが説明した状況についての私の意見では、2 つのビューが相互に通信するためにグローバル イベント オブジェクトを使用します。

ここにいくつかのコード例があります

var globalEvents = {};
_.extend(globalEvents, Backbone.Events);

var GlimpseView = Backbone.View.extend({
  events: {
    'click a.see-verbose': 'onSeeVerboseClick'
  },

  onSeeMoreClick: function() {
    globalEvents.trigger('seeVerbose', this.model);
  }
});

var VerboseView = Backbone.View.extend({
  initiliaze: function() {
    globalEvents.on('seeVerbose', onSeeVerbose, this);
  },

  onSeeVerbose: function(model) {
    // code to render the verbose view
  }
});
于 2012-09-05T13:55:01.480 に答える