我在網格中有一個動作列,點擊它後需要執行很多非平凡的操作。我不想只使用處理程序方法來避免我的代碼中出現重複。我想處理可以從多方調用的控制器方法的click事件。如何從網格動作欄調用控制器的動作
這裏是我的行動列的定義:
{
header: translator.translate('actions'),
xtype: 'actioncolumn',
width: 50,
items:[{
id : 'detailContactPerson',
icon : '/resources/images/pencil.png',
tooltip: translator.translate('show_detail')
}]
},
但現在我不知道怎麼寫組件查詢定義設置監聽器。
init: function() {
this.control({
'detailContactPerson': {
click: function(obj) {
var contactPerson = obj.up('container').contactPerson;
this.detail(contactPerson);
}
},
我試過的第二種方法是直接從處理程序方法調用控制器的方法。它看起來像這樣:
{
header: translator.translate('actions'),
xtype: 'actioncolumn',
width: 50,
items:[{
id : 'detailContactPerson',
icon : '/resources/images/pencil.png',
handler: function(contactPerson){
Project.controller.contactPerson.detail(contactPerson);
},
tooltip: translator.translate('show_detail')
}
但不幸的是它不支持調用控制器方法(沒有方法異常引發)的方式。
可能somone幫助我構建工作組件查詢,或顯示一些exapmle如何從外部調用控制器方法?
Atian嗨。感謝您的回覆。第一句話(和它的很多變化)我已經嘗試過。我認爲問題在於操作列的項目不是組件。它們被定義爲簡單的數組。這使得它無法使用ComponentQuery來獲取它。但我不確定,我一到辦公室就會問Sencha的開發人員。 「點擊事件」的方式看起來很完美。我會試試看。再次非常感謝。我很感激。 – elCarda
是的,它不是一個組件。 this.control無法訪問它。我不喜歡ActionColumn,而更喜歡使用插件 – atian25
它完美的工作,謝謝。 – elCarda