未捕获的TypeError:无法调用未定义的方法'get':BackBone

时间:2014-02-20 11:07:37

标签: javascript backbone.js collections model views

我在骨干网中运行这个示例程序。但我得到一个错误,如'无法调用方法'得到'未定义'。到目前为止,我用我所知道的一切来尝试。但我仍然有问题。任何人都可以帮我解决这个问题。

(function(){
    //Providing a global scope
    window.App = {
        Models : {},
        Views: {},
        Collections: {}
    };

    window.template = function(id){
        return _.template($('#'+id).html());
    };

    // Declared a Model for Task       
    App.Models.Task = Backbone.Model.extend({    
    });

    App.Collections.Tasks = Backbone.Collection.extend({
        model: App.Models.Task
    });

    App.Views.Tasks = Backbone.View.extend({   
        tagName: 'ul',

        render: function(){
            this.collection.each(this.addOne,this);
        },

        addOne: function(task){
            //creating a child view 
            var taskView = new App.Views.Task({model: task});

            //append it to root element
            this.$el.append(taskView.render().el);
        }
    });     

    App.Views.Task = Backbone.View.extend({
        tagName: 'li',
        render : function(){
            this.$el.html(this.model.get('title'));
            return this;
        }
    });         

    var tasksCollection = new App.Collections.Tasks([
        {
        title: 'Goto Store',
        priority: 4
        },
        {
        title: 'Goto Store2',
        priority: 5
        },
        {
        title: 'Goto Store3',
        priority: 6
        },
        {
        title: 'Goto Store4',
        priority: 7
        }
    ]);

    var tasksView = new App.Views.Task({collection : tasksCollection});
    tasksView.render();
    console.log(tasksView.el);
    // $(document.body).append(tasksView.el);       
})();

1 个答案:

答案 0 :(得分:1)

我不知道这是否是印刷错误,但如果没有,您的问题是您在任务视图中设置了您的收藏,而不是在任务视图中

var tasksView = new App.Views.Tasks({collection : tasksCollection});