0

backbone.js と localstorage を使用して単純な RSS を作成しようとしています。フォームの値をローカル ストレージに保存できません。

これこれを参考にしています。

データを保存すると、次のエラーが発生します

Resource failed to load 
    b.ajaxTransport.send jquery-1.9.1.min.js:5
    b.extend.ajax jquery-1.9.1.min.js:5
    g.ajax backbone-min.js:41
    g.sync backbone-min.js:41
    Backbone.sync backbone.localStorage.js:190
    f.extend.sync backbone-min.js:12
    f.extend.save backbone-min.js:16
    Backbone.View.extend.saveSource app.js:47
    b.event.dispatch jquery-1.9.1.min.js:3
    b.event.add.v.handle jquery-1.9.1.min.js:3

見る

var sourceView = Backbone.View.extend({
   tagName:"li",

   template:_.template($('#tmpl_sourceDetails').html()), 

   initialize: function () {
        console.log(this.model);
        this.model.bind("change", this.render, this);
    },

    render: function (eventName) {
        $(this.el).html(this.template(this.model.toJSON()));
        return this;
    },

    events: {
            "change input": "change",
            "click .save": "saveSource",
            "click .delete": "deleteSource"
    },

    change: function (event) {
        var target = event.target;
        console.log('changing ' + target.id + ' from: ' + target.defaultValue + ' to: ' + target.value);

    },

    saveSource: function () {
        console.log(this.model);
        if (this.model.isNew()) {
            var self = this;
            site = $('#name').val();
            siteURL = $('#sourceURL').val(); 
        this.model.save({source:site,sourceURL:siteURL});
        this.$el.html(this.template(this.model.toJSON()));
        } else {
            this.model.save();
        console.log(this.Collections.length);   
        }
        return false;
       },

    deleteSource: function () {
        this.model.destroy({
            success: function () {
                alert('RSS source deleted successfully');
                window.history.back();
            }
        });
        return false;
    },

    close: function () {
        $(this.el).unbind();
        $(this.el).empty();
    }
});

コレクション

//indicates collection
//localstorage table defined here
var RSSCollection = Backbone.Collection.extend({
    model: RSS,
    url: "../api/RSS",
    localStorage: new Store("tblSource")// saving all items under tblSource namespace.

});

更新 エラーは、model.localStorage が未定義であることが原因だと思います。backbone.localSync を呼び出す代わりに保存時に Backbone.ajaxSync を呼び出しています

backbone.localStorage.js 
    Backbone.getSyncMethod = function(model) {
      if(model.localStorage || (model.collection && model.collection.localStorage)) {
        return Backbone.localSync;
      }

      return Backbone.ajaxSync;
    };

私が間違っているアイデア/提案はありますか? ありがとう

4

0 に答える 0