【问题标题】:Backbone.js & localstorageBackbone.js 和本地存储
【发布时间】:2012-01-27 00:08:08
【问题描述】:

试图了解backbone.js。此示例使用Backbone BoilerplateBackbone.localStorage,我遇到了一个令人困惑的问题;当 quizes.create(...) 被调用时,我得到这个错误:

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

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

【问题讨论】:

    标签: javascript backbone.js local-storage


    【解决方案1】:

    在您的收藏中,您将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")
    });
    

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 2012-09-14
      • 2012-12-25
      • 2012-01-13
      • 2017-06-24
      • 1970-01-01
      • 2016-11-10
      • 2017-12-06
      • 2012-02-23
      相关资源
      最近更新 更多