Search code examples
backbone.js

Backbone.js Models Uncaught TypeError: undefined is not a function


I am trying to create a Backbone Model.

However the as soon i create a object of Model, i get following error

Uncaught TypeError: undefined is not a function 

on backbone.js files extend function.

Here is jsFiddle for it.

var ProjectModel = new Backbone.Model.extend({
    idAttribute: '_id',
    urlRoot: '/project',
    defaults: function () {
        return {
            name: 'New Project',
            description: 'Add Description here'
        };
    }
});

// var Projects = Backbone.Collection.extend({
//     model: ProjectModel,
//     url: '/project'
// });

// var projects = new Projects();
var obj = new ProjectModel({
    name: 'test'
});
console.log(obj);

Solution

  • Remove the "new" that appears before your Backbone.Model.extend call - should look like this:

    var ProjectModel = Backbone.Model.extend({
      idAttribute: '_id',
      urlRoot: '/project',
      defaults: function () {
        return {
            name: 'New Project',
            description: 'Add Description here'
        };
      }
    });
    

    By putting "new" there, you were returning an instance of a Backbone model, not a new constructor with which to make new model instances.