私は単一のビューとテンプレートで 2 つのモデルを利用しようとしていますが、この質問に示されている例を試した後: Backbone.js: 複数のモデルを組み合わせた複雑なビュー いくつかのエラーが発生しています。
最初に、ビューモデルを使用して両方のモデルを次のように結合しようとすると:
var model = new Backbone.Model();
model.set({ image: image, person: person });
var view = new Project.Views.Images.ShowView({ model: model });
テンプレート内の何にもアクセスできません。各フィールドは空であるか、関数の文字列表現になっています。これが私のテンプレートです:
<img width="<%= image.width %>" height="<%= image.height %>" alt="<%= image.message %>" src="<%= image.url %>" />
<p><%= image.message %></p>
<h4>by <%= person.name %></h4>
テンプレートが生成する出力は次のとおりです。
<img width="" height="" alt="" src="function () {
var base = getUrl(this.collection) || this.urlRoot || urlError();
if (this.isNew()) return base;
return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + encodeURIComponent(this.id);
}">
<p></p>
<h4>by </h4>
イメージとチェイサーの両方が有効なモデルであることを確認しました。そのうちの 1 つだけをビューに渡すと、正常に機能し、そのモデルがそのビューにバインドされます。
私は他のアプローチも試しました:
var view = new Project.Views.Images.ShowView({ model: image, person: person });
テンプレートを使用すると、次のようになります。
<img width="<%= width %>" height="<%= height %>" alt="<%= message %>" src="<%= url %>" />
<p><%= message %></p>
<h4>by <%= person.name %></h4>
ただし、これにより、person is undefined という javascript エラーがスローされ、テンプレートから person.name を削除すると、残りが適切に表示されます。
私は何を間違っていますか?これらは正しいアプローチですか?