将所有骨干模型属性写入html模板

时间:2015-09-23 12:01:35

标签: javascript backbone.js underscore.js backbone-views backbone-model

我使用骨干视图将模型数据写入模板。

我目前在视图中这样做:

    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)。

由于

3 个答案:

答案 0 :(得分:1)

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

在你看来:

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 />

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

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