2012-01-26 3 views
0

Попытка получить голову вокруг backbone.js. В этом примере используются Backbone Boilerplate и Backbone.localStorage, и я сталкиваюсь с непонятной проблемой; Когда quizes.create (...) называется я получаю эту ошибку:Backbone.js & localstorage

backbone.js:570 - Uncaught TypeError: object is not a function

model = new this.model(attrs, {collection: this});

Quiz код модуля:

(function(Quiz) { 
Quiz.Model = Backbone.Model.extend({ /* ... */ }); 

Quiz.Collection = Backbone.Collection.extend({ 
    model: Quiz, 
    localStorage: new Store("quizes") 
}); 
quizes = new Quiz.Collection; 

Quiz.Router = Backbone.Router.extend({ /* ... */ }); 

Quiz.Views.Question = Backbone.View.extend({ 
    template: "app/templates/quiz.html", 

    events: { 
     'click #save': 'saveForm' 
    }, 

    initialize: function(){ 
     _.bindAll(this); 
     this.counter = 0; 
    }, 

    render: function(done) { 
     var view = this; 
     namespace.fetchTemplate(this.template, function(tmpl) { 
      view.el.innerHTML = tmpl(); 
      done(view.el); 
     }); 
    }, 
    saveForm: function(data){ 
     if (this.counter <= 0) { 
      $('#saved ul').html(''); 
     } 
     this.counter++; 
     var titleField = $('#title').val(); 
     console.log(quizes); 
     quizes.create({title: titleField}); 

    } 

}); 

})(namespace.module("quiz")); 

ответ

3

В вашей коллекции, вы именовании model в качестве Quiz объекта, а не фактический Quiz.Model. Итак, когда вы вызываете new this.model(), вы на самом деле вызываете Quiz() - это объект, а не функция. Вам необходимо изменить этот код на:

Quiz.Collection = Backbone.Collection.extend({ 
    model: Quiz.Model, // Change this to the actual model instance 
    localStorage: new Store("quizes") 
}); 
+0

omg спасибо! +10000 :) –

Смежные вопросы