我試圖在單個視圖中使用兩個模型,因此模板但試圖在此問題中顯示的示例:Backbone.js: complex views combining multiple models我遇到了一些錯誤。在單個主幹視圖和EJS模板中使用多個模型的問題
首先,如果我嘗試使用一個視圖模型,這兩種模式如下組合:
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錯誤說人是不確定的,如果我刪除的人。名稱來自模板,其餘顯示正確。
我做錯了什麼,這些甚至是正確的方法?
您還可以通過將模型對象的方法調用爲JSON()來將模型轉換爲json。這樣可以在模板中使用模型時不必從屬性對象中獲取模型的屬性。 ex。 MyTemplate的(this.model.toJSON()); – jpanganiban 2012-05-06 12:41:37