2012-04-29 3 views
3

로컬 Backbone.js 앱을 사용하고 데이터라는 로컬 폴더를 사용하여 초기 데이터를 저장합니다. 다음과 같이Backbone.js 앱에서 로컬 데이터의 변경 사항을 저장하는 방법은 무엇입니까?

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

그리고 내 AppRouter에서 initialize 방법입니다 : 그리고 내 Backbone.router에, 나는 다음과 같이 초기 데이터를 얻기 위해 아약스 사용하여 내 응용 프로그램에서

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}); 
    }, 

, 때마다 나는 내 Backbone.View에서 항목을 생성, 삭제 및 업데이트하려면 모델 및 컬렉션을 업데이트하려면 this.model.destroy(), this.collection.add() 또는 this.model.set()을 사용합니다. 그러나 그것은 위의 'todolist.json'인 초기 데이터에 이러한 변경 사항을 저장하지 않는 것으로 보입니다. 전체 페이지를 새로 고치면 앱에 초기 데이터가 계속 표시됩니다. 내가하고 싶은 일은 내 뷰에서 몇 가지 변경 사항이 발생할 때마다 데이터 파일이 업데이트된다는 것입니다. 그럼 어떻게해야합니까?

한 가지 더 질문 : localStorage를 사용하여 이러한 데이터를 유지하려면 어떻게해야합니까? 라우터에서 ajax 호출을 사용할 필요가 없습니까? 방금 라우터의 initialize 메서드에서 Backbone.Collection.fetch() 메서드를 사용하면 응용 프로그램이 시작된 후 localstorage가 this.model.destroy(), this.collection.add() 또는 this.model.set()을 사용할 때마다 자동으로 데이터가 업데이트됩니다.

답변

0

.json 파일에 수정 된 데이터를 다시 기록 하시겠습니까, 아니면 .json 파일을 초기 데이터로 사용 하시겠습니까? 그런 다음 지속성을 위해 Local Storage/IndexedDB/Web SQL/...을 사용 하시겠습니까? 어쨌든, Backbone은 매우 가볍고 out-of-the-box 기능을 지원하지 않습니다. 직접 작성하거나이 작업을 수행하는 플러그인을 찾으십시오.

HTML5 앱에서 로컬 파일에 쓰기가 가능해야합니다. FileSystem API을 사용하지만 모든 브라우저에서 작동하도록하는 것이 까다로울 수 있습니다. 게다가 파일 시스템의 특별한 샌드 박스 섹션에서만 파일을 읽고 쓸 수 있습니다.

로컬 저장소의 경우 backbone-localstorage.js 플러그인을 살펴보십시오. Backbone에 포함 된 Todo 예제 앱도이 플러그인을 사용하고 있습니다. 내 머리 위로부터 기본적으로 모델의 가져 오기 및 동기화 메소드를 재정의해야합니다.

관련 문제