【ExtJS 4.2.1 MVC】 store找不到資料 Cannot read property 'getRootNode' of undefined

摘要:【ExtJS 4.2.1 MVC】 store找不到資料 Cannot read property 'getRootNode' of undefined

這個問題是我在實作MVC架構的時候發生的情形,在這個糾結上可是花了我好大時間才找到問題點。

狀況描述: 建立一個TreePanel,但卻發生了已經取得資料卻找不到資料的問題

顯示錯誤為:Cannot read property 'getRootNode' of undefined

從顯示錯誤的地方可以看到JS的錯誤在 node: store.getRootNode(),

意思就是store取得root資料的時候出錯了......但是錯在哪呢???


首先看一下資料結構


                           圖1

 

圖1可以看的出來,這是一個MVC架構的專案,接下來就把MVC主要的code貼出來

Application.js


Ext.define('LiSheng.Application', {
    name: 'LiSheng',
    extend: 'Ext.app.Application',
    controllers: [
         'Main'
    ],
}); 

Controller Main.js


Ext.define ('LiSheng.controller.Main',{
    extend: 'Ext.app.Controller',
    views: [
            'Header',
            'Main',
            'MenuTree'
    ],
    stores: [
        'MenuTree'
    ]
});

View MenuTree.js

這邊大家有注意到問題的地方了嗎??

        問題就出在store的路徑,在Controller的Main.js 設定stores時僅輸入了該對應的檔案名稱,這是可以被接受的,因為在ExtJS中Controller的stores就是代表著store的目錄,所以就算不輸入完整的路徑也是可以找到相對應的檔案。

        但這裡有個重要的觀念,路徑是必須相對應的,沒錯,也就是說,假如我在Controller的stores沒有輸入完整的路徑,那麼我在view的store就不能輸入完整的路徑,否則會發生兩邊路徑不對而導致發生找不到資料的錯誤。

        如上面的範例,我在Controller的stores設定的路徑是'MenuTree',那麼我在view的store也必須設定'MenuTree',這樣才不會發生錯誤唷~~

 

 

 


寫文章並不為了什麼,只是撰寫文章的過程中,可以使我的去思考更多層面的東西,寫的過程中也可以再次回味學習到的東西,並深刻的印象在腦中。


當你還在找這些資訊學習時,我想安逸的生活還不適合你,一起努力吧。