Backbone Model没有传递给视图

时间:2014-07-23 21:15:09

标签: javascript backbone.js

我正在编写一个新的骨干应用程序,我在其他应用程序中使用的代码上遇到了一些错误。我正在为这个应用程序使用最新版本的主干,所以我不知道是否有变化使我在这里做的事情破坏,或者是什么。谷歌整天都没有给我任何帮助。

我有一个我正在拆分的集合,并将各个模型发送到视图。视图报告this.model未定义。

代码:

观点:

    DigitalAnalytics.View.TopPage = Backbone.Model.extend({
        tagName: 'tr',
        className: 'db-toppage-tr',
        template: DigitalAnalytics.Helper.template('db-analytics-toppages-template'),
        initialize: function() {
            console.log(this.model); // prints 'undefined'
        },
        render: function() {
            console.log(this.model); // prints 'undefined'

            // This throws an error saying that it can not call html() on undefined
            this.$el.html(this.template( this.model.toJSON()) );
            return this;
        },
        events: {}
    });

集合视图:

DigitalAnalytics.View.Collection.TopPages = Backbone.View.extend({
    el: $('#db-analytics-toppages'),
    template: DigitalAnalytics.Helper.template(''),
    initialize: function() {
        this.listenTo(this.collection, 'reset', this.render);  // Never fires even though the collection is returned
        this.collection.fetch(); // Works just fine
    },
    render: function() {
        this.collection.each( function(page, index) {
            console.log(page.toJSON()); // writes the object to console just fine 
            var topPage = new DigitalAnalytics.View.TopPage({model: page});
            this.$el.append( topPage.render().el );
        }, this);
    }
});

1 个答案:

答案 0 :(得分:2)

您可能已将Backbone.Model扩展到应扩展Backbone.View的位置 将代码中的Backbone.Model.extend更改为Backbone.View.extend,使用Backbone.Model创建一个Backbone模型,然后在启动时传递此模型进行查看。