本文是個人學習Extjs調試程序心得,有錯請指正,謝謝指教!
寫這篇文章的初衷是因為學習Extjs有了大半年的時間,從問問題到可以解答一些常識性問題過程中意識到,很多新手在問問題的時候都只是問結果為什么不是想的那樣,包括我自己剛開始。其實問問題是一門又學問的事,知道問題點在那里在去問 這樣可以事半功倍,別人也樂於為你解答。在這里我就簡單的說一下Extjs 在調試上 我是怎么查找問題的。(Extjs 不同於輕量級的框架,需要一些js,jquery方面的基礎)
問題類型1:為什么我加的組件不顯示。
拜托!..你加的組件不顯示我怎么知道。我還得幫你捋一捋你的思路,所以很多新人問這個問題的時候都是沒人願意回應的,因為解決起來很麻煩,很多種可能性。下面我就帶來我的調試方法。首先打開瀏覽器的調試框,如下圖:
看看程序是否報錯,報錯的原因是什么,報錯在那個文件,那段代碼。一般只看自己添加組件所在js的錯誤信息(關於如何查找到准確的錯誤信息自行百度)
然后如果沒有報錯還不顯示怎么辦呢? 接下來我們就要檢查是添加組件本身的問題,還是父組件兼容問題。
1.很簡單 還記得你寫的第一個Ext界面么,把你的組件抽出來 單獨顯示在一個頁面上。如果可以顯示就可能是父組件的問題,但是是否是兼容問題,還要進行一步。如果不現實就是你組件本身的問題,請參考api進行更改,主要檢查自己添加的屬性會給組件帶來什么樣的影響。(熟悉api非常重要)
2.用系統組件代替你的自定義組件,api上的例子直接復制到你的組件的代碼上就可以了,比如你自定義的combobox不顯示,那就用api上的combobox,如果api上的例子可以顯示那么就是你定義的combobox的問題,一般常規的配置參考api(自己定義的屬性要知道是用來做什么的,再次聲明api非常重要),如果系統組件也無法顯示那么就是父組件的兼容性問題了,一般是用搜索引擎可以找到常見的問題答案,同時父組件如無特殊要求應該盡量使用自身不帶有布局屬性或者特殊屬性的容器(如Panel,Container,Component)。
問題類型2:為什么后台的值在前台無法顯示?
拜托!你總得告訴我值到哪里了,有沒有傳回前台,前台有沒有請求后台的值。下面就是我在這一類型問題上的解決方法
1.首先你要知道你的組件有沒有報錯,如果報錯請參考上面的瀏覽器調試或者自行百度報錯原因。
2.如果沒報錯,那么前台是否發請求去后台請求值&請求是否有效,如果沒有發送請求,那就是你組件請求的問題(仔細檢查store,ajax,ext.request.etc..)。
如果請求報403,501等錯誤自行百度解決。
3.是否后台報錯,是否請求超時。如果有自行檢查后台代碼(多寫調試語句對新手很重要)
4.如果請求收到了數據,請檢查數據格式和內容是否和你要的數據格式是一致的。
5.前台是否解析到了你的數據,檢查fields或者model或者直接對象取屬性,鍵值對是否一致。
6.前台組件數據標識是否與fields或者model一致,如一般組件數據標識是‘name’,grid中的列數據標識是‘dataIndex’。
7.如果上述都可以,還是無法解決就只能自求多福了。(注:用法不對產生的問題,不算extjs本身的bug)
問題類型3:流程性問題
拜托!流程性問題很耗時間,可能性也很多,大家都是工作的 都很忙ok?
遇到流程性問題 應該自己先有個數據處理的流程,心中大致有個流程圖 然后在動手 ,具體的技術上問題再去詢問 大家都會樂意為你解答。
以上純屬個人見解,如果有異議
哈哈,打死我啊,來打死我啊。