Backbone.js 主干:视图中的视图列表
让我先说明我需要什么,这样你才能理解我的问题。 我有一个联系人视图,如:Backbone.js 主干:视图中的视图列表,backbone.js,underscore.js,Backbone.js,Underscore.js,让我先说明我需要什么,这样你才能理解我的问题。 我有一个联系人视图,如: ContactView = Backbone.View.extend({ template: _.template("Name: <%= name %> E-mail: <%= email %> Phones <%= label1
ContactView = Backbone.View.extend({
template: _.template("Name: <%= name %>
E-mail: <%= email %>
Phones
<%= label1 %> - <%= number1 %>
<%= label2 %> - <%= number2 %>"),
render: function() {
var contact = this.template(this.model.toJSON());
this.$el.html(contact);
}
});
我将ContactView模板更改为:
template: _.template("Name: <%= name %>
E-mail: <%= email %>
Phones
<%= phones %>"),
template:u.template(“名称:
电邮:
电话
"),
但是如何使我的渲染方法渲染电话列表并将其放入模板中?
我找不到处理这种情况的模式。代码开始看起来不太好了
ps:这只是一个例子,我的应用程序还有几个其他部分需要它,一个视图需要在列表中生成包含内容的子视图。看起来您正在使用下划线.js来呈现模板,下划线.js提供了一种在模板中显示内容的方法(参见第二个示例)。比如说
template: _.template("Name: <%= name %>
E-mail: <%= email %>
Phones
<% _.each(phones, function (phone) { %>
<%= label %> - <%= number %>
<% }); %>"),
另外,如果您要走这条路线,那么请注意缓存视图可能需要付费,但是如果您只需要呈现内容,那么将电话号码保留为一个数组并在模板中呈现可能需要付费。我的意思是,呈现方法已经有:this.template(this.model.toJSON());我必须使phones字符串成为模型的一部分,这样它才能在显示的模板中呈现。但那将是一个非常丑陋和(我认为)不正确的做法。非常感谢你的人!我使用了第一个例子,因为我发现它是一个简短而优雅的方式,很好!很乐意帮忙,正如我提到的,除非你有理由使用第二种方法,否则第一种方法可能会更好。
template: _.template("Name: <%= name %>
E-mail: <%= email %>
Phones
<% _.each(phones, function (phone) { %>
<%= label %> - <%= number %>
<% }); %>"),
render: function () {
this.$el.html(this.model.toJSON());
_.each(this.model.get('phones'), function(phone) {
this.$el.find('.phoneArea').append(new phoneView({model: phone}).render().el));
},this);
return this;
}