2013-02-03 3 views
1

이 질문은 익숙한 것으로 알고 있지만 비슷한 질문을 많이 읽고 특정 상황을 찾을 수 없었습니다.매핑 된 녹아웃 객체의 하위 섹션 업데이트

gds (GlobalDataStructure)라는 자바 스크립트 개체가 있습니다. 그 이름에서 알 수 있듯이,이 객체는 프로젝트의 모든 웹 페이지에 필요한 모든 정보를 포함하며 localStorage에 저장됩니다 (따라서 왜 뷰 모델을 업데이트하지 않고 처음에 매핑해야하는지). 여기에는 AJAX를 통해 읽는 모든 종류의 피드가 포함되어 있습니다.

저는 생성자 함수를 사용하여 gds를 만듭니다. 의 내가 초기 피드에서 데이터로 JS 배열을 채운 후에는 GDS가

function gdStructure(){ 
    this.lastUpdate = new Date(2010,1,1); 
    this.family = new Object(); 
    this.series = new Object(); 
    this.product = new Object(); 
} 

그래서 난 다음

gds= new gdStructure(); 

을했다 가정 해 봅시다, 다량이 구조를 단순화하고 희망이 질문은 간단하게하기 위해, 내가 할 수행원.

viewmodel = ko.mapping.fromJS(gds); 
    ko.mapping.fromJS(gds,viewmodel); 

뷰 모델

는 그래서이 모든 문제를 작동하지 않습니다

ko.applyBindings(viewmodel); 

각 페이지에 바인딩됩니다. 이 문제는 예를 들어 새 가족 피드를 가져 와서 해당 개체를 업데이트하려고 할 때 발생합니다. 나는 다음과 같은

gds.family=feed; 
ko.mapping.fromJS(gds,viewmodel); 

할 수있는 그리고 모두가 잘 작동 것입니다,하지만 대규모 JS 때마다 객체 매핑된다. 이것은 매우 느리기 때문에 변경된 피드 만 업데이트 할 수있는 방법을 찾아야합니다. 이상적으로는 ..

ko.mapping.fromJS(gds.family, viewmodel.family); 

그러나 이것은 효과가없는 것으로 보입니다. 또한 그것이 OBJECT이기 때문에 나는 할 수 없습니다.

viewmodel.family(gds.family) 

아무도 도와 줄 수 있습니까? 나는 이것이 아주 단순해야만한다고 확신한다.

미리 감사드립니다.

답변

0

나는 당신이 LIB 작품이 부분은 당신의 데이터와 정의를 사용하여

viewmodel = ko.mapping.fromJS(gds); 
ko.mapping.fromJS(gds,viewmodel); 

아주 이상한 모양을 missunderstood 있다고 생각?

어쨌든, 난 (A 비트가 단순하지만 난 당신이 포인트를 얻을 생각)과 같은 답장을

http://jsfiddle.net/QtyGd/1/

+0

감사를 ko.mapping 사용합니다. 확실히 viewmodel = ko.mapping.fromJS (gds) 뷰 모델 데이터 구조를 만들고 모든 키를 ko.observables로, 배열을 녹아웃 배열로 설정합니다. 그게 내가 그것을 이해하는 방법입니다 ?? 그러면 ko.mapping.fromJS (gds, Viewmodel)는 뷰 모델을 gds의 최신 데이터로 업데이트합니다. 그게 맞습니까! 그렇지 않으면 배열 구조가 매우 다양하고 거대한 배열로 뷰 모델을 어떻게 정의 할 수 있습니까? 따라서 매핑의 목적은 무엇입니까? – Wongadob

+0

gds와 viewmodel은 코드에서 동일한 객체입니다. 실제 데이터가 그림으로 나타 납니까? 내 바이올린을 어떻게하는지보십시오.모델과 데이터가 있습니다 – Anders

+0

데이터가 피드로 읽어지고 GDS에 저장됩니다. 그런 다음 Viewmodel에 매핑됩니다. GDS는 localStorage에서 정렬해야하므로 녹아웃 뷰 모델 일 수 없습니다. viewmodel을 저장하면 데이터가 아니라 함수를 저장하게됩니다. 저장하기 전에 JS로 다시 변환 할 수 있지만이 데이터는 피드에서 즉시 업데이트되므로 전체 viewmodel로 항상이 작업을 수행하고 싶지는 않습니다. – Wongadob

관련 문제