6

モデル内または他の場所からバックボーン ビューを初期化しますか?

モデル/ビューを整理する最良の方法を見つけようとしています。モデルにビューを初期化させることは理にかなっていますか?

情報をありがとう!

4

2 に答える 2

12

モデル

いいえ、モデルは他の MVVM オブジェクトを初期化しません。
保持するデータと、それを保持する方法を定義することのみを担当するようにしてください。

var CoolModel = Backbone.Model.extend({
  defaults: function() {
    return {
      coolness: 'extreme',
      color: 'red'
    };
  }
};

var myModel = new CoolModel;

意見

ビューには、 Backbone.Viewの「親」によって自動的に呼び出される初期化関数が含まれている必要があります。

var CoolView = Backbone.View.extend({

  doSomething: function() { ... },
  doSomethingElse: function() { ... },

  initialize: function() {
    this.listenTo(this.model, 'eventA', this.doSomething);
    this.listenTo(this.model, 'eventB', this.doSomethingElse);
  }

});

AppView

実際にビュー オブジェクトを作成するときは、バインド先のモデルを渡します。そして、それは技術的にはコードのどこでも発生する可能性があります (ただし、通常はアプリケーション レベルのビューで発生します)。

renderSomething: function(todo) {
  var view = new CoolView({model: myModel});
  // view.render() ....
}

つまり、アプリケーションはモデルとビューをまとめます。

于 2013-03-29T17:00:54.873 に答える
3

これは間違いなく完全な回答ではありませんが、Backbone Todos Annotated Docsを読むことをお勧めします。

コレクションの「追加」イベントをリッスンし、コレクションに追加されたときにメイン ビューから新しいモデルのビューを作成することがわかります。これは、注釈付きドキュメントの AppView 初期化関数で確認できます。

これは、私がすべてのアプリで行っている方法でもあり、お勧めです。このアプローチでは、必要に応じて、新しいモデルにさらにロジックを含めることもできます (コレクション内のモデルの数を追跡する統計ビューを再レンダリングするなど)。

于 2013-03-29T17:14:30.087 に答える