2

次のような単純なモデルを作成できます。

define(["models/base/model"], function(Model) {
  "use strict";

  var IssueModel = Model.extend({
    defaults:{
      lastName: "Bob",
      firstName: "Doe"
    }
  });
  return IssueModel;
});

そして、コントローラーからこれを行うことができます:

this.model = new IssueModel();

そして、ビューを作成するときに、次のようにモデルを渡すことができます。

this.view = new IssueView({model: this.model});

最後に、私のテンプレートでは、これを行うことでモデルのプロパティを正常に取得できます。

Hi {{firstName}} {{lastName}}

しかし、 を使用してコレクションを定義し、IssueModelそのコレクションを (前に示したようなモデルではなく) ビューに渡そうとすると、Handlebars テンプレートでモデルを参照する方法がわかりません。

var self = this;
this.collection = new IssueCollection();
this.collection.fetch({
  success: function(collection) {
    self.view = new IssueView({collection: collection});
    console.log(self.collection);
  },
  error: function(collection, error) {
    // The collection could not be retrieved.
  }
});

fetchParse.com バックエンドから 5 つのモデルを適切に取得できることはわかっています。これは、コンソールに表示されるものだからです。

コレクションのコンソール出力

私の質問はこれです。Chaplin.js が を使用していることは知っていますgetTemplateDataが、モデルを渡すときに、ビューでプロパティを参照するために特別なことをする必要はありません。Handlebars テンプレートのビューに渡したコレクションをどのように参照、具体的には繰り返しますか?

{{#each [Model in the collection I passed to the view]}}
  {{title}}
{{/each}}
4

1 に答える 1

1

チャップリンは CollectionView を使用してコレクションをレンダリングします。これは基本的に、コレクションの変更をリッスンし、それに応じてサブビューを追加/削除する通常のビューの拡張です。

this.view = new IssueCollectionView({collection: this.collection});

また、データが追加されるとすべての子アイテムが自動的にレンダリングされるため、コレクション ビューを使用するときに成功の呼び出しを待つ必要はありません。

于 2013-10-23T12:12:42.937 に答える