我试图在一个视图中使用两个模型,因此是模板,但是在尝试了这个问题中显示的示例之后:Backbone.js: complex views combined multiple models我遇到了一些错误。
首先,如果我尝试使用视图模型来组合两个模型,如下所示:
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>
我已经验证图像和追逐者都是有效的模型,如果我只将其中一个传递给视图,它可以正常工作并将该模型绑定到该视图。
我也尝试过另一种方法:
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>
但是,这会引发一个 javascript 错误,说明 person 未定义,如果我从模板中删除 person.name ,其余部分会正确显示。
我做错了什么,这些甚至是正确的方法吗?