2009-11-18 4 views
0

ExtJs 관용구의 핵심적인 부분을 이해하지 못해서,이 질문에 대한 안내가 나와 있습니다. ExtJs를 잘못된 방식으로 사용하려고합니다.ExtJs : 메모리 내 객체에 양식 필드 첨부하기

사용자가 동적 레코드를 추가 할 수있는 응용 프로그램을 작성 중입니다. 방을 설명하는 척하고 사용자가 문 추가 버튼을 클릭하여 문을 얻습니다. FormPanel이 문 세부 정보를 지정할 수있는 FormPanels 목록에 추가되었습니다.

저는 메모리에있는 객체의 세부 정보를 보유하고 있으며 콤보 상자, 텍스트 필드 등의 값을 선택한 결과를 올바른 객체의 필드와 연결할 수 있기를 원합니다. 내 계획은 JSON/XHR/REST를 사용하여 서버에 개체를 보내고 유지할 수있게하는 것입니다. 문 개체 (예 : 공간)로 이동하여 내 자신을 갖고 싶어하는 다른 처리가 있습니다.

지금까지 아무 것도 시도하지 않은 것이 있습니다. select 이벤트를 후크 할 수 있지만 내 범위가 필드 컨트롤 (이 경우에는 문 객체에 액세스 할 수 없음)이거나 범위가 문 객체이며 필드 컨트롤의 값에 액세스 할 수 없습니다.

ExtJs가 숨겨진 필드에 연결하는 것에 대해 이야기하기 때문에 조금 혼란스러워집니다. 그러나 주어진 컨트롤에 대해 주어진 id를 가진 하나의 필드 만 원한다. 이것은 ID의 범위가 FormPanel로 제한되지 않는 한 하나 이상의 문을 가질 수 없다는 것을 의미합니다.

마지막으로, 이상적으로는 컬러 콤보 박스의 새로운 항목으로 업데이트 된 공통 저장소를 사용하여 여러 개의 도어에서 공유 할 수 있습니다. 누구든지이 작업의 예를 알고 있다면 감사 할 것입니다.

var doorDataEditor = new Ext.form.FormPanel({ 
    labelWidth: 75, 
    width: 350, 
    defaultType: 'textfield', 
    items: [{ 
      fieldLabel: 'colour', 
      name: 'colour', 
      xtype: 'combo', 
      store: colourStore, 
      displayField: 'name', 
      typeAhead: true, 
      mode: 'local', 
      triggerAction: 'all', 
      emptyText: 'Select the colour for this door...', 
      selectOnFocus:true, 
      value: door.colour, 
      listeners:{ 
       scope: door, 
       'select': function(ev, target) { 

        alert(target.findField('name')); this.colour = target.value; 
       } 
      } 
     }]}); 

미리 도움을 주셔서 감사합니다.

답변

1

일반 DOM 이벤트 처리기 형식 (ev, target)을 사용하고 있지만 일반 DOM 이벤트는 아닙니다. 구성 요소의 경우 적절한 구성 요소 별 이벤트 서명이 있는지 API docs을 확인해야합니다. 이 경우 ComboBox는 (Ext.form.ComboBox combo, Ext.data.Record record, Number index)입니다. record.data.colour에서 값을 가져올 수 있어야합니다 (레코드가 매핑 된 방법이라고 가정).

+0

멋지다! 그것이 내가 놓친 통찰이었다. 이벤트 목록을 사용자 지정 매개 변수를 문서화하는 데 연결하지 않았습니다. – Sarge