根据数据中的变量分配视图模板?

时间:2012-09-17 15:35:02

标签: backbone.js marionette

我正在使用主干和木偶,我想根据数据中的变量渲染视图。 this.model.template我在想可以从我的数据中提取(返回myTemplate和myOtherTemplate),然后我可以在渲染函数中做一些操作,但它不起作用。有什么建议?。可以使视图了解模型吗?

var graph = [{
    nodeName: "1st level item",
    template: "myTemplate",
    nodes: [{
        nodeName: "2nd level item",
        template: "myOtherTemplate"
    }]
}];


TreeView = Backbone.Marionette.CompositeView.extend({
    tagName: "ul",
    initialize: function(){
        this.collection = this.model.nodes;
    },
    appendHtml: function(collectionView, itemView){
        collectionView.$("li:first").append(itemView.el);
    },
    render: function(){
        var that = this;
        console.log('Loading template name: ' + name + ' template: ' + this.template + ' data: ' + this.model.template);
        TemplateManager.get(this.template, function(template){
            var html = $(template).tmpl();
            that.$el.html(html);
        });
        return this;
    }
});

1 个答案:

答案 0 :(得分:2)

您是如何初始化视图的?

该视图通常期望该模型是Backbone模型。访问模型属性时,应使用mymodel.get('attributeName')。单个属性不能直接在模型上使用。它们在mymodel.attributes中可用(例如,mymodel.attributes.template),但除了调试之外不应该直接使用attributes,因为属性的存储和访问方式将来可能会发生变化或者可能会被更改各种插件,如果你使用任何插件。

另请注意,在大多数情况下,您不需要覆盖render方法。相反,请查看beforeRenderonRender