Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干:视图中的视图列表_Backbone.js_Underscore.js - Fatal编程技术网

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;
}