Backbone.js & localstorage - PullRequest
       0

Backbone.js & localstorage

0 голосов
/ 26 января 2012

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

backbone.js: 570 - Uncaught TypeError: объект не является функцией

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

Код модуля теста:

(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"));

1 Ответ

3 голосов
/ 26 января 2012

В вашей Коллекции вы называете 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")
});
...