Knockout.js로 Mvvm을 구현할 수 있습니다. 하지만 크로스 브라우저 (FF 및 Chrome)에서 HTML 5 오프라인 저장소를 지원하고 싶습니다.오프라인 저장소 및 Knockout.js를 사용하여 MVVM을 구현하는 방법은 무엇입니까?
오프라인 개체에 html 개체를 바인딩하고 싶습니다.
Knockout.js로 Mvvm을 구현할 수 있습니다. 하지만 크로스 브라우저 (FF 및 Chrome)에서 HTML 5 오프라인 저장소를 지원하고 싶습니다.오프라인 저장소 및 Knockout.js를 사용하여 MVVM을 구현하는 방법은 무엇입니까?
오프라인 개체에 html 개체를 바인딩하고 싶습니다.
나는 그것을 시도하지는 않았지만 찾고있는 것으로 보이는 knockout.localStorage
project on GitHub이 있습니다.
해당 플러그인을 사용하면 observable을 생성 할 때 observable을 localStorage에 저장하는 두 번째 인수로 객체를 전달할 수 있어야합니다. 문서에서
:
var viewModel = {
name: ko.observable('James', {persist: 'name'})
}
ko.applyBindings(viewModel);
당신은 로컬 스토리지 (크로스 브라우저)에 객체를 직렬화 할 수 amplify.js 같은 라이브러리를 사용할 수 있습니다. 구형 브라우저 용 구형 저장 장치로 다시 넘어갑니다. 먼저 observables를 JSON 객체로 랩 해제 한 다음 amplify.store를 사용하여 객체를 직렬화하고 저장합니다. 그런 다음 그것을 꺼내서 그것을 가져올 때 관찰 할 수있는 객체로 다시 매핑 할 수 있습니다.
AmplifyJS는'1.0 beta' 이후 버전의 쿠키를 지원하지 않는 것으로 보입니다 [http://amplifyjs.com/changelog/] – jamiebarrow
노크 아웃 (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/.
나는 이것을 사용해 왔으며, 정말 잘 작동하며 매우 깨끗하고 깔끔합니다. –