2012-06-26 50 views
1

我想通過額外的參數信息框的處理函數。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')); 
    } 
}, 

所以比當上刪除事件的用戶點擊他就可以進入他之所以被這樣做。 他按下確定或取消後,我打電話處理程序。我可以訪問那裏的按鈕和文本,但我需要傳遞額外的參數。

讀煎茶文檔,我發現這個:

FN:功能

當駁回對話中使用被稱爲通過點擊配置按鈕,或在對話框關閉按鈕的回調函數,或者按回車鍵進入輸入。

進展,並等待對話會忽略這個選項,因爲它們不響應用戶的操作,只能關閉編程,因此任何需要的功能應該由相同的代碼也將關閉對話框後調用。參數傳遞:

參數

-buttonId:字符串 按下該按鈕的ID,之一: OK 是 沒有 取消

-text:字符串值 輸入字段如果提示或多爲真

-opt:對象 傳遞給顯示的配置對象。

但我仍不能得到這個工作:(

+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); 
    } 
}); 
相關問題