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;
};
私が間違っているアイデア/提案はありますか? ありがとう