本來這個號是為了找工作(記錄自己找工作期間刷程式碼的所想所得,重要是假裝自己有一個技術部落格…),但是排序演算法還沒刷完就找到了工作,所以就懶病繼續發作就沒寫了。現在工作了,真是什麼都不懂,為了記錄工作中遇到的問題,必須再把它撿起來。
最近的專案中要用到ExtJS,因為根本就不懂,所以就給我安排了一個簡單的表格增刪查改的實現,之中遇到了許多問題,慢慢解決吧,現在先說說在一個grid中,當使用了行編輯外掛後,點選儲存如何觸發事件。
如何在view面設定一個監聽、觸發監聽,之後在控制器頁面來處理這個監聽程式,過程如下:對於每一個類,由什麼來觸發監聽,可以再ExtJS自帶的api文件中找到該類的Events項,裡面有哪些事件,哪些事件就能觸發監聽。例如Ext.grid.plugin.RowEditing類,有beforeedit、canceledit、edit、validateedit四種事件,那麼listener就可以監聽這四種事件,閱讀api文件可知它們分別監聽什麼事件,在view頁面外掛配置項下編寫如下程式碼:
listeners: { edit: { fn: `wobuzhidao`, scope: `controller` } }
Listeners監聽了edit事件,其處理函式名為wobuzhidao,作用範圍在控制器,控制器程式碼如下
wobuzhidao: function (editor, context, eOpts) { alert(context.record.get(`age`)); }
在這個處理函式裡,有3個引數,是從view頁面監聽程式的edit傳過來的,通過查閱api文件我們可以看到這三個引數,並且知道他們分別代表什麼。以上程式碼實現了在grid裡的plugin外掛中,對行編輯設定了一個監聽,當編輯儲存後會觸發edit事件,通過context引數的.record.get(‘age’)獲取編輯行對應列的值。