[Php] 비동기 데이터로 Dojo Dijit FilteringSelect의 상점 갱신



Answers

이렇게 일어난 것처럼,이 튜토리얼은 실제로 가능하지 않지만 실제로 본 것이 얼마나 쉬운지를 보여줍니다.

이것이 어딘가에 있는지 확인하십시오.

dojo.require("dojo.data.ItemFileWriteStore");

그런 다음 filteringSelect가 어떻게 이루어 졌는지에 관계없이 다음을 수행 할 수 있습니다.

newStore = new dojo.data.ItemFileWriteStore({
    data:{
         identifier: 'id',
         label: 'name',
         items: response.data
    }
});

filteringSelect.store = newStore;
filteringSelect.startup();
Question

인트라넷 환경에서 Zend + Dojo 양식을 사용하고 있습니다. 양식에서 선택된 상태가 변경되면 카운티 목록을 업데이트해야합니다. HTML을 사용하면 json 응답을 구문 분석하고 (또는 html 단편을 제공) select의 innerhtml을 업데이트합니다. 그러나 Dojo에서 그렇게하는 것은 매우 복잡합니다.

즉, 양식 필드에 onBlur 업데이트를 설정할 수있는 일반 메서드를 정의했습니다. 이 함수는 인수를 사용하여 데이터베이스를 호출하고 싱글 톤 응답 (우리가 이미 처리 한) 또는 목록 응답을 가져 오는 Controller 동작에 연결됩니다. 목록을 다시 얻는다면, 그 목록을 가지고있는 select에서 옵션을 변경해야합니다.

이 모든 것은 지금까지 잘 작동합니다. response.data에 좋은 목록이있는 유효한 json 응답을 얻습니다. 여기에 문제가 있습니다. 어떻게하면 기존 저장소를 간단히 업데이트 할 수 있습니까 (검사 결과 _comboBoxDataStore임이 드러납니다)? 자동 생성되므로 다른 종류의 상점에서 셀렉트를 선언 할 수 없습니다.

상점을 무차별 적으로 움직일 수있는 방법이 있습니까? 주된 열쇠는 내가하는 일은 Internet Explorer에서 작동해야한다는 것입니다. 파이어 폭스를 사용하면 내가 작업하고있는 객체에 대한 더 나은 통찰력을 얻을 수있다.

추가 질문으로 _comboBoxDataStore를 업데이트 할 수없는 이유를 아는 사람이 있습니까? 다른 프레임 워크는 예를 들어 extJS와 같이 상점을 매끄럽게 업데이트 할 수 있습니다. 콤보 상자에 제한 사항을 설계하는 데있어 추후에 추측 할 수 없으므로 원본 HTML에서 한 단계 씩 업데이트 할 수는 없습니까? 아니면 난해한 물건 목록을 저글링하지 않는 명백한 해결책을 놓치고 있습니까?




옵션을 사용할 수도 있습니다 ..

var fldSelect = dijit.byId("fieldSelect");
fldSelect.options = fldoptions;
fldSelect.startup();

여기서 fldoptionsfldoptions 하는 새 데이터입니다. 주의 사항 : fldSelect.startup() 호출하지 마십시오. 그렇지 않으면 데이터가 업데이트되지 않습니다.




Links