2012-07-22 9 views

답변

6

나는 그것을 시도하지는 않았지만 찾고있는 것으로 보이는 knockout.localStorageproject on GitHub이 있습니다.

해당 플러그인을 사용하면 observable을 생성 할 때 observable을 localStorage에 저장하는 두 번째 인수로 객체를 전달할 수 있어야합니다. 문서에서

:

var viewModel = { 
    name: ko.observable('James', {persist: 'name'}) 
} 

ko.applyBindings(viewModel); 
+1

나는 이것을 사용해 왔으며, 정말 잘 작동하며 매우 깨끗하고 깔끔합니다. –

6

당신은 로컬 스토리지 (크로스 브라우저)에 객체를 직렬화 할 수 amplify.js 같은 라이브러리를 사용할 수 있습니다. 구형 브라우저 용 구형 저장 장치로 다시 넘어갑니다. 먼저 observables를 JSON 객체로 랩 해제 한 다음 amplify.store를 사용하여 객체를 직렬화하고 저장합니다. 그런 다음 그것을 꺼내서 그것을 가져올 때 관찰 할 수있는 객체로 다시 매핑 할 수 있습니다.

http://amplifyjs.com/api/store/

+2

AmplifyJS는'1.0 beta' 이후 버전의 쿠키를 지원하지 않는 것으로 보입니다 [http://amplifyjs.com/changelog/] – jamiebarrow

2

노크 아웃 (KnockoutJS)의 subscribe 기능 솔루션베이스를 작성했습니다. 모델을 가져와 observable 속성을 모두 유지합니다.

ko.persistChanges = function (vm, prefix) { 

    if (prefix === undefined) { 
     prefix = ''; 
    } 

    for (var n in vm) { 

     var observable = vm[n]; 
     var key = prefix + n; 

     if (ko.isObservable(observable) && !ko.isComputed(observable)) { 

      //track change of observable 
      ko.trackChange(observable, key); 

      //force load 
      observable(); 
     } 
    } 
}; 

코드와 JSFiddle의 예를 들어 확인 http://keestalkstech.com/2014/02/automatic-knockout-model-persistence-offline-with-amplify/.