2012-04-29 28 views
3

私はローカルのBackbone.jsアプリケーションを実行しており、データという名前のローカルフォルダを使用して初期データを配置しています。そして、私のBackbone.routerに、私は次のように初期データを取得するために、AJAXを使用して次のようにBackbone.jsアプリでローカルデータの変更を保存する方法は?

p = $.ajax({ 
     url: 'data/todolist.json', 
     dataType: 'json', 
     data: {}, 
     success: function(data) { 
      var approuter = new AppRouter({data: data}); 
      Backbone.history.start(); 
     } 
    }) 

そして、私のAppRouterinitialize方法は次のとおりです。私のアプリで

initialize: function(options){ 
     this._data = options.data; 
     this._todos = new TodosCollection(options.data); 
     this._length = this._todos.length; 
     this._index = new CategoriesView({collection: this._todos}); 
    }, 

、毎回I私のBackbone.Viewでアイテムを作成、削除、更新するには、this.model.destroy(),this.collection.add()またはthis.model.set()を使用してモデルとコレクションを更新します。しかし、それは私の初期のデータに上記の変更を保存していないようです。これは上記の 'todolist.json'です。私はページ全体を更新すると、アプリはまだ初期のデータを表示します。私がしたいことは、私のビューでいくつかの変更が起こるたびにデータファイルが更新されるということです。だから私はこれをどのように達成すべきですか?

もう1つ質問:これらのデータを保持するためにlocalStorageを使用したいのですが?私のルーターでajaxコールを使用する必要はありませんか?私はちょうどルータのinitializeメソッドでBackbone.Collection.fetch()メソッドを使用します。アプリケーションが開始された後、this.model.destroy(),this.collection.add()またはthis.model.set()を使用するたびにlocalStorageによってデータが自動的に更新されますか?

答えて

0

変更されたデータを.jsonファイルに書き戻したいのですか?.jsonファイルを初期データとして使用したいのですか?それ以降は、永続性のためにローカルストレージ/ IndexedDB/Web SQL/...を使用しますか?とにかく、バックボーンは非常に軽量であり、これらの機能のどちらもすぐに使用することはできません。これを自分で書くか、これを行うプラグインを見つけなければなりません。

ローカルファイルへの書き込みは、HTML5アプリケーションではFileSystem APIを使用する必要がありますが、すべてのブラウザで機能するようにするのは難しいことがあります。さらに、ファイルシステムの特別なサンドボックス化されたセクションでのみ、ファイルを読み書きすることができます。

ローカルストレージの場合は、backbone-localstorage.jsプラグインを参照してください。 Backboneに含まれているTodoサンプルアプリもこのプラグインを使用しています。私の頭の上から、基本的には、モデルのフェッチと同期の方法をオーバーライドする必要があります。

関連する問題