本來這個號是為了找工作(記錄自己找工作期間刷代碼的所想所得,重要是假裝自己有一個技術博客...),但是排序演算法還沒刷完就找到了工作,所以就懶病繼續發作就沒寫了。現在工作了,真是什麼都不懂,為了記錄工作中遇到的問題,必須再把它撿起來。 最近的項目中要用到ExtJS,因為根本就不懂,所以就給我安排了一個 ...
本來這個號是為了找工作(記錄自己找工作期間刷代碼的所想所得,重要是假裝自己有一個技術博客...),但是排序演算法還沒刷完就找到了工作,所以就懶病繼續發作就沒寫了。現在工作了,真是什麼都不懂,為了記錄工作中遇到的問題,必須再把它撿起來。
最近的項目中要用到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’)獲取編輯行對應列的值。