0

我正在使用骨干和木偶,我想根据数据中的变量渲染视图。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;
    }
});
4

1 回答 1

2

你是如何初始化视图的?

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

另请注意,在大多数情况下,您不需要重写该render方法。相反,请查看beforeRenderand onRender

于 2012-09-18T00:06:24.760 回答