2014-03-01 41 views
0

我有一個在extjs4變換ComboBoxExtJS4變換組合框的onchange()事件不工作

<script> 

Ext.onReady(function() { 
     Ext.tip.QuickTipManager.init(); 

     var transformed = Ext.create('Ext.form.field.ComboBox', { 
      typeAhead: true, 
      transform: 'DisplayListID', 
      forceSelection: true 
     }); 
    }); 
    </script> 



<select id="DisplayListID" onChange="change();"> 
     <option> ... 

    </select> 

ExtJS的成功改變我的HTML selectComboBox但是當我選擇的元素,則onChange事件不是被解僱。

如何將javascript函數change()綁定到我的變換CombBox

回答

4

通過添加監聽到ComboBox使用ExtJS的變化事件:

listeners: { 
    change: change 
} 

其中第二變化是你的函數。

3

洛倫茨是正確的,你應該使用change listener,但是如果你想轉換多個連擊在同一時間和那些連擊已經確定,你將需要手動每個新轉化的組合,其處理方法鏈接功能,這可能是一場真正的噩夢。但是,您可以子類ComboBox控制並讓它自動處理方法鏈接,爲此,您必須考慮到在ComboBox控件初始化後原始'select'被刪除。所以,你必須得到確保調用父組合框init方法之前,以保持對目標方法的引用,否則你將無法得到它,像:

initComponent: function() { 
    var me = this, 
     transform = me.transform, 
     transformSelect, 
     transformMethod; 

    // Check if transform id has been supplied 
    if(transform) {   
     // Attempt to retrieve target select from the DOM 
     transformSelect = Ext.getDom(transform); 
     // Get sure select node exists 
     if (transformSelect) { 
      // Keep a reference to target method 
      transformMethod = transformSelect.onchange; 
     } 
    } 

    // Now that we have the method info 
    // Allow ComboBox init method to replace original 
    // select tag with ExtJs Control 
    me.callParent(arguments); 

    // Bind change event with original handler method 
    me.on('change', transformMethod, me); 
} 

我已經創建了一個完整的工作示例here。希望對你有幫助。

+0

很好的例子。謝謝你 – danrah