2011-12-05 3 views
4

내가 backbone.js를 사용하여 모바일 애플리케이션을 구축하기 위해 노력하고있어 그 것이다 :Backbone.js 로컬 스토리지, 선행 서버에서 부하

  1. 로드의 첫 번째 실행
  2. 을의 서버에서 항목의 목록 ,
  3. 즐겨 찾기 등의 목록 항목을 저장할 수 (나는 백본 localstorage.js을 사용하고 있습니다) 로컬 저장이 저장 로컬 저장소에 이러한 커밋

받는 데이터의 변경 사항을 적용하지 않습니다 응용 서버 만 작동하지만 로컬 저장소로

서버에서 수동으로 데이터를로드하고 컬렉션을 채우는 중입니다. 데이터가 로컬 저장소에 데이터를 전송할 수 없다는 것만으로도 작동합니다.

나는이 일을하려고 벽에 머리를 세게 치고있다. 이 문제를 해결하는 방법에 대한 아이디어는 높이 평가됩니다. 내가 본 모든 예제는 서버에 커밋하거나 순수한 로컬 저장소입니다.

답변

5

약간의 예제 코드가 유용 할 것입니다.

로컬 저장소가 작동하는 경우 처음 실행하면 서버에서 항목 목록을로드하는 방법을 모르겠지만이 방법을 사용하면 편리 할 것입니다.

이렇게하는 것이 가장 쉬운 방법입니다. 앱을 실행하는 동안 모델을 새로 고치기 위해 서버로 돌아갈 필요가 없다면 앱에 포함 된 서버에서 모델을 전달하고 더 많은 정보를 들어

foo = new MyCollection(myJSONthatContainsAllTheModels) 

백본 문서 도구에서 Bootstrapping를 참조하십시오 컬렉션을 만들 수 있습니다.

당신이 응용 프로그램의 실행의 과정을 통해, 주기적으로, 서버에서 갱신해야하는 경우

..

사용 백본 로컬 스토리지는 하나의 변화로입니다. 즉, 동기화 메소드 및 모든 일반 "가져 오기", "저장"등의 기능을 무시하게되면 로컬 저장소를 조작하게됩니다. Backbone.Sync를 LocalStorage 버전으로 바꾸기 전에 원래 Backbone.Sync를 Backbone.ServerSync와 같은 새로운 기능으로 복사하는 방법이 있습니다. 이렇게하면 REST 동기화가 유지됩니다.

그런 다음 Backbone.ServerSync 함수를 사용하여 서버에서 데이터를 가져 오는 데 사용되는 새로운 함수로 Backbone.Collection을 확장합니다.

백본처럼 보이지는 않습니다. localstorage는 컬렉션의 URL 속성을 방해하므로 매우 쉽게이 작업을 수행 할 수 있습니다.

명확하게하기 위해 serverfetch라고하는이 새로운 수집 기능은 페치 복제본이지만 Backbone.Sync 대신 Backbone.ServerSync 메서드를 사용합니다.

서버에서 응답을 받고 구문 분석하면 로컬 저장소에 커밋해야하는 각 모델에 대해 add를 호출합니다.

+1

감사합니다. Edward! 너는 나를 올바른 길로 인도했다. 당신이 제안한대로 그것을 구현했고 그것은 매력을 작동시킵니다. 그러나 서버에서 초기로드를 부트 스트랩 해제했습니다. 데이터가 로컬 저장소에없는 경우에만 발생하므로 항상 뚱뚱한 'ol JSON 개체로 페이지의 무게를 줄이는 것은 불필요한 것 같습니다. –

+1

우수!그것을 듣고 다행 운동. –

+0

백본에서 초보자,이 솔루션을 오랫동안 검색하고 있지만 any1은 jsfiddle의 샘플 예제를 제공 할 수 있습니다. 서버에서 데이터를 가져 와서 localstorage에 저장합니다. –

관련 문제