Require.jsと一緒にBackbone.jsフレームワークで作業しているときに、いくつかのデータをlocalStorageに保存しようとしています。
ただし、次のエラーが発生します。
Uncaught Error: A "url" property or function must be specified
このエラーの原因の手がかりはありますか?簡単なGoogleは、Backbone.syncを設定する必要があることを明らかにしましたが、localStorageアダプターはすでにそれを行っていませんか?私は何が欠けていますか?
関連するコードスニペットは次のとおりです。
require.config({
paths: {
// Major libraries
jquery: 'libs/jquery/jquery.min',
underscore: 'libs/underscore/underscore.min',
backbone: 'libs/backbone/backbone.min',
// Require.js plugins
text: 'libs/require/text',
// Backbone.js plugins
localstorage: 'libs/backbone/localstorage.min',
// Just a short cut so we can put our html outside the js dir
// When you have HTML/CSS designers this aids in keeping them out of the js directory
templates: '../templates'
}
});
..。
define([
'underscore',
'backbone',
'models/score',
'localstorage'
], function(_, Backbone, ScoreModel, Store){
var ScoreCollection = Backbone.Collection.extend({
model: ScoreModel,
localStorage: new Store("ScoreCollection")
});
return ScoreCollection;
});
..。
define([
'underscore',
'backbone'
], function(_, Backbone){
var ScoreModel = Backbone.Model.extend({
});
return ScoreModel;
});
- 編集 -
ルートは次のとおりです。
define([
'jquery',
'underscore',
'backbone',
'views/scores/list',
'views/scores/add'
], function($, _, Backbone, ScoreListView, ScoreAddView){
var AppRouter = Backbone.Router.extend({
routes: {
'scores': 'showScores',
'scores/add': 'addScore',
'*actions': 'defaultAction'
}
});
var initialize = function(){
var app_router = new AppRouter;
app_router.on('route:showScores', function(){
var scoreListView = new ScoreListView();
scoreListView.render();
});
app_router.on('route:addScore', function(){
var scoreAddView = new ScoreAddView();
scoreAddView.render();
});
app_router.on('route:defaultAction', function(){
console.log('No route');
});
Backbone.history.start();
}
return {
initialize: initialize
};
});
- アップデート -
どうやら、モデルはコレクションにリンクされていないようです。したがって、コレクションに設定されているlocalStorageはモデルに適用されません。モデルにlocalStorageを明示的に設定すると、モデルが機能します。しかし、誰かが私が見逃しているものを知っていますか?