2

Bakbone Marionette で、モデルのデータを使用して IteView を表示しようとしています。残りの API からの JSON データは問題ありません。問題は、領域内にビューを表示しようとすると、前述のエラーが表示されることです。

これはコードです:

TestDataModel = Backbone.Model.extend({

    url: function(){
        return '/test.php?api=getTestData
    }
});

TestDataView = Backbone.Marionette.ItemView.extend({

    template: Handlebars.compile($('#testing-template').html()),

    initialize: function(){
        _.bindAll(this);

        // I want to bind render when the model changes        
        this.model.on('change', this.render, this);        

        this.model.fetch();
    }

});


<script id='testing-template' type='text/x-handlebars-template'>
    Testing template: {{test_token1}} {{test_token2}}
</script>

// this the main function that render the data on a main base page region.
onRender: function(){

    var testModel = new TestDataModel.Model();
    var testView = new TestDataView({
         model:testModel
    });
    this.test_region.show(testView);
}
4

3 に答える 3

2

onRender の代わりに onShow を使用します。onRender が呼び出されたとき、領域はまだ設定されていません

于 2013-04-29T14:45:01.703 に答える
1

モデルにバインドする代わりに、listenTo 規則を試してください。

TestDataView = Backbone.Marionette.ItemView.extend({

    template: Handlebars.compile($('#testing-template').html()),

    initialize: function () {

        this.listenTo(this.model, 'change', this.render);

        this.model.fetch();
    }
});

上で述べたように、これでもうまくいかない場合は、何か不足しているか、独自のレンダリングを提供する必要があります。

于 2013-04-28T20:09:41.363 に答える