2012-06-26 4 views
1

messageBox의 처리기 기능에 추가 매개 변수를 전달하려고합니다. 나는이 같은 상황에 맞는 메뉴를 만든Ext JS가 처리기에 여분의 매개 변수를 전달합니다.

:

onEventContextMenu: function (s, rec, e) { 
    e.stopEvent(); 

    if (!s.ctx) { 
     s.ctx = new Ext.menu.Menu({ 
      items: [{ 
       text: 'Delete event', 
       iconCls: 'icon-delete', 
       scope: this, 
       handler : function() { 
       Ext.MessageBox.show({ 
           title : 'Reason', 
           msg : 'place reason:', 
           width : 300, 
           buttons : Ext.MessageBox.OKCANCEL, 
           multiline : true, 
           fn : this.showResultText(buttonId, text, rec) 
          }); 
       } 
      }] 
     }); 
    } 
    s.ctx.rec = rec; 
    s.ctx.showAt(e.getXY()); 
}, 

showResultText : function (btn, text, record){ 
alert(btn); 
    if (btn == 'cancel') { 
     alert(text + ' cancel'); 
    } 
    if (btn == 'ok') { 
     alert(record.get('Name')); 
    } 
}, 

그래서 삭제 이벤트에 사용자가 클릭은 그가 그 일을 왜 이유를 입력 할 수 있습니다 때보. 그는 ok를 누르거나 취소 한 후 처리기를 호출합니다. 거기에있는 버튼과 텍스트에 액세스 할 수 있지만 여분의 매개 변수를 전달해야합니다.

FN : 기능

대화 상자가 하나 해산 할 때 설정 버튼을 클릭에 의해 호출, 또는 대화 상자 닫기 버튼에 콜백 함수,

읽기 엽차 설명서 나는이 발견 또는 입력 버튼을 눌러 입력을 입력하십시오.

진행률 및 대기 대화 상자는 사용자 동작에 응답하지 않고 프로그래밍 방식으로 만 닫을 수 있으므로 대화 상자를 닫은 후에 동일한 코드에서 필요한 모든 함수를 호출해야하므로이 옵션은 무시됩니다. 매개 변수가 전달 :

매개 변수

-buttonId : 문자열 누른 버튼의 ID, 중 하나를 입력 필드 경우의 문자열 값 : 확인 예 없는 는

-text을 취소 prompt 또는 multiline이 참일 때

-opt : Object show에 전달 된 config 개체.

하지만 여전히 나는이 작업 :(

+0

이미 구현해야하는 텍스트 필드가 있습니까? – Reimius

+0

문제를 해결할 수있는 해결 방법을 만들었습니다. 곧 여기에 게시하겠습니다. – Misiu

답변

1

Ext.Function

Ext.MessageBox.show({ 
    title: 'Reason', 
    msg: 'place reason:', 
    width: 300, 
    buttons: Ext.MessageBox.OKCANCEL, 
    multiline: true, 
    fn: Ext.Function.bind(this.showResultText, this, rec, true) 
}); 

그럼 당신이있어 showResultText 방법은 다음과 같을 것입니다 찾을 수 어차피 :

showResultText : function (btn, text, eventOptions, record){ 
    alert(btn); 
    if (btn == 'cancel') { 
     alert(text + ' cancel'); 
    } 
    if (btn == 'ok') { 
     alert(record.get('Name')); 
    } 
}, 
4

접근을 그 보통은 scope 매개 변수를 통해 추가 데이터를 전달하는 것입니다 :

Ext.MessageBox.show({ 
    ... 
    scope: { 
     obj: this, 
     record: rec 
    }, 
    fn: function(buttonId, text, option) { 
     // Access properties specified in the 'scope' parameter via 'this' 
     var obj = this.obj, 
      record = this.record; 

     obj.showResultText(buttonId, text, record); 
    } 
}); 
관련 문제