Question

I am running this sample program in backbone. But I am getting a error like 'Cannot call method 'get' of undefined'. I tried everything with what i know so far. But I still have the problem. Can anyone help me to solve this issue.

(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);       
})();
Était-ce utile?

La solution

I don't know if it's a typographical error but if not, your problem is that you are setting your collection in your Task view and not in your Tasks view.

var tasksView = new App.Views.Tasks({collection : tasksCollection});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top