0

Backbone.js を学習しようとしている初心者ですが、次のエラーが発生しました。

「this.model」をオブジェクトに変換できません

私は audioplayer の簡単なアーキテクチャを構築しようとしていますが、このエラーは私を怒らせます! 原因がわかりませんが、ブラウザのコンソールに ListOfSongsView の this.model.bind("reset", this.render, this) 行でエラーが表示されます。

これが私のコードです:

$(function () {    
    var Player = Backbone.Model.extend({
        defaults:{
             //blablabla
        }
    });     
    var Playlist = Backbone.Collection.extend({ 
        model: Player
    });    
    var MyPlaylist = new Playlist([ 
        { 
            //blablabla
        }
//here comes more songs
    ]);     
    var ListOfSongsView = Backbone.View.extend({                    
        tagName: 'ul',
        id: "tracks",        
        initialize: function () {
            this.model.bind("reset", this.render, this);
            var self = this;
            this.model.bind("add", function (player) {
                $(self.el).append(new OneSongView({model:player}).render().el);
            });
        },       
        render: function (eventName) {
            _.each(this.model.models, function (player) {
                $(this.el).append(new OneSongView({model:player}).render().el);
            }, this);
            return this;
        }
    });      
    var OneSongView = Backbone.View.extend({     
        tagName: "li",
        calssName: "clearfix",   
        template:_.template($('#tpl-one-song').html()),      
        initialize: function () {
            this.model.bind("change", this.render, this);
        },       
        render: function (eventName) {
            $(this.el).html(this.template(this.model.toJSON()));
            return this;
        }        
    });     
    var AppRouter = Backbone.Router.extend({    
        routes:{
            "": "list",
            "!/": "list"
        },      
        initialize: function () {
            $('#block').html(new ListOfSongsView().render().el);
        },          
        list: function () {
            this.playlist = new Playlist();
            this.ListOfSongsView = new ListOfSongsView({model:this.playlist});
            this.playlist = MyPlaylist;
            $('#block').html(new ListOfSongsView().render().el);
        }           
    });      
    var app = new AppRouter();
    Backbone.history.start();    
});

私が間違っているのは何ですか?助けてください、私の頭はすでに割れています:(

4

1 に答える 1