2011-09-08 4 views
0

안녕하세요. 데이터 저장소를 다른 곳으로 복사하는 방법을 알려주십시오. 다음과 같은 방법으로 시도했지만 작동하지 않습니다. 여기에 jsonStore에서 newGridStore로 데이터를 복사하려고합니다.dojo 데이터 저장소 복제/복사

jsonStore.fetch({query:{} , onComplete: onComplete}); 

var onComplete = function (items, request) { 
    newGridStore = null; 
    newGridStore = new dojo.data.ItemFileWriteStore({ 
     data : {} 
    }); 
    if (items && items.length > 0) { 
    var i; 
    for (i = 0; i < items.length; i++) { 
     var item = items[i]; 
     var attributes = jsonStore.getAttributes(item); 
     if (attributes && attributes.length > 0) { 
      var j; 
      for (j = 0; j < attributes.length; j++) { 
       var newItem = {}; 
       var values = jsonStore.getValues(item, attributes[j]); 
       if (values) { 
        if (values.length > 1) { 
        // Create a copy. 
        newItem[attributes[j]] = values.slice(0, values.length); 
        } else { 
         newItem[attributes[j]] = values[0]; 
        } 
       } 
      } 
     newGridStore.newItem(newItem); 
     } 
     } 
    } 
} 
+0

그렇게하기 전에 보여줍니다. 왜 이렇게하려고하는지 설명 할 수 있습니까? – Layke

+0

Becouse jsonStore를 새 값으로 업데이트 한 후 이전 값을 가진 값과 비교해야합니다. – nath

+0

그러면 잘못하고 있습니다. 내 대답을 보라. – Layke

답변

1

위의 질문에 근거합니다. 하나의 이유로 값을 새 저장소로 복사하려고 시도하면 변경 내용이있는 값을 검색 한 다음 저장소 전체를 보낼 필요없이 개별적으로 저장할 수 있습니다.

이 접근법은 완전히 잘못되었습니다.

도장에는 isDirty()이 있으며 revert()은 원래 값으로 저장됩니다. 어떤 값이 변경되었고이를 수행 할 필요가 없음을 알고 있습니다.

늪지 표준을 살펴보십시오 여기 IFWS : http://docs.dojocampus.org/dojo/data/ItemFileWriteStore

여기에서 모든 것을 읽을 수 있는지 확인하십시오 : 당신은 당신이 당신의 가게보다 우선합니다 자신의 _saveCustom 방법을 만들 수있다 수행 할 작업을 http://docs.dojocampus.org/dojo/data/ItemFileWriteStore#id8

저장하면 변경된 값을 볼 수 있습니다.

페이지 맨 아래에서 데모를 클릭하십시오. _saveCustom을 사용하여 정확히 어떻게 할 수 있는지 보여줍니다.