2012-10-03 5 views
0

목록을 저장하는 데 사용 된 상점이 있습니다. 목록 항목을 탭하면 '세부 정보'패널이 표시됩니다. 세부 정보 패널의 단추 중 하나가 POST 요청을 시작하여 서버 측 작업을 시작합니다. 그러면 서버 측의 상태가 "유휴 상태"에서 "진행 중"으로 변경됩니다. 세부 정보 패널에서 UI를 업데이트하려면 Model 클래스에서 load()를 호출하여이 인스턴스의 최신 데이터를로드합니다.저장소의 단일 인스턴스를 어떻게 업데이트합니까?

MyApp.model.Server.load(serverId, 
    success: function(record, operation) { 
     // code that updates the current view 
    } 
}); 

그러나 이는 기본 저장소의 인스턴스를 업데이트하는 것처럼 보이지 않습니다. 따라서 목록으로 돌아 가면 내가 탭한 서버에 대한 부실 데이터가 있습니다 (여전히 "유휴 상태"라고 표시됨).

업데이트 된 Server 인스턴스를 가져와 Store에서 해당 레코드 만 업데이트 할 수있는 방법이 있습니까? 한 레코드의 UI를 업데이트하기 위해 전체 Store를 다시로드하지 않아도됩니다.

Ext.getStore('Server').getById(serverId).data = record.data; 

내가 여기서 뭔가를 놓치고 있습니까 :

나는 아무 소용이, 가게에서 인스턴스를 갱신하려고? 아니면 한 레코드에 대한 업데이트 된 상태를 얻기 위해 전체 Store를 다시로드해야합니까?

답변

1

아니요, 모든 매장을 다시로드 할 필요가 없습니다. 좋은 데이터를 수동으로 업데이트해야합니다. 올바른

:

이 내가 정확히 무엇을 찾고 있어요되지 않습니다

var record = Ext.getStore('Server').first();

record.set(form.getData());

record.save();

+0

-이 서버에 저장 작업을 트리거합니다. 그러나 양식의 모든 로컬 변경 사항을 저장하지 않으므로 저장소의 개체에 대한 로컬 복사본을 원격 개체의 새로운 복사본으로 업데이트하려고합니다. 어쨌든 고마워요. –

+1

당신은 저장, 그런 식으로 다시로드하지 않고 메모리에 기록을 업데이트 할 수 있습니다 'VAR recordStr = store.first()' 'recordStr.set (record.getData는())' 는 이 코드는 기록을 업데이트합니다. 'set()'메서드를 사용할 필요가있다. – MattioliSencha

관련 문제