将所有 backbone 个模型属性写入 html 个模板

write all backbone model attributes to html template

我正在使用 backbone 视图将模型数据写入模板。

我目前正在视图中执行此操作:

    return Backbone.View.extend({
        className: 'presentationListItem',
        template: _.template(tmpl, null, { variable: 'm' }),

        render: function() {
        this.$el.html(this.template(_.extend({}, this.model.toJSON())));
        return this;
}

然后在我的 HTML 模板中,我像这样访问数据:

Catalog ID: {{ m.Id }} <br />
Catalog Name: {{ m.Name }} <br />

最近,我不得不通过具有不同属性的视图传递不同的模型。

我想知道是否有一种方法可以将模型中的所有内容写入 HTML 模板,而不必像我一样指定特定属性(即 ctx.Id、ctx.Name)现在正在做。

谢谢

如果你想将多个模型传递给视图,你可以这样做:

您的内部视图:

template: _.template(tmpl)
...

render: function() {
        this.$el.html(this.template({
           model1: this.model1.toJSON(),
           model2: this.model2.toJSON()}));
        return this;
}

你的模板:

Catalog ID: {{ model1.Id }} <br />
Catalog Name: {{ model2.Id }} <br />

您可以使用 _.values(object) - http://underscorejs.org/#values

这将 return 该对象属性的所有值。

但是,您可能会更好,为不同的模型类型使用不同的视图,并为每个模型类型定制模板。

如果您只想查看模型内部的所有内容,您可以通过将参数传递给 JSON.stringify 从 json 生成漂亮的可读字符串,然后将其打印在视图中的某处。

JSON.stringify(this.model.toJSON(), false, 2)