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

どのようにビューを初期化していますか?

ビューは通常、モデルがバックボーン モデルであることを想定しています。モデル属性にアクセスするときは、 を使用する必要がありますmymodel.get('attributeName')。個々の属性は、モデルでは直接使用できません。これらはmymodel.attributes(たとえば、mymodel.attributes.template)attributesで使用できますが、属性の保存方法とアクセス方法が将来変更されるか、使用する場合はさまざまなプラグインによって変更される可能性があるため、デバッグ以外では直接使用しないでください。

renderまた、ほとんどの場合、メソッドをオーバーライドする必要はないことに注意してください。代わりに、 と を見てbeforeRenderくださいonRender

于 2012-09-18T00:06:24.760 に答える