2014-03-31 56 views
0

我正在創建一個ExtJS 4單頁Web應用程序,並且遇到了一些問題,這些問題決定了定義和維護我的應用程序狀態的MVC優先方式。我知道ExtJS 4的商店的全球性,我喜歡它們的想法,但是它們的實用性在幾個方面都受到質疑。ExtJS 4 Web應用程序狀態管理

例如,我有一些模型可能需要在某些時候擴展到數千個,並且將所有這些加載到客戶端瀏覽器的內存中並不意味着我是最好的想法。試圖做到這一點我會遇到很大的性能問題。

此外,除了在選項卡面板中相同選項卡上的多個網格之外,我的應用程序還將具有可同時查看多個窗口的窗口。這些視圖應該根據其屬性顯示模型的子集。如果這些視圖與同一個全球商店及其模型相關聯,則它們將受到諸如過濾器之類的操作的影響,並且將被有效地限制爲顯示相同的一組模型,這不是我想要實現的。

所以我的實際問題是我該如何去處理這種情況?我已經閱讀了StackOverflow中的一個類似問題,它要求視圖保存它們自己的商店實例,而不是使用全局實例,但我不確定這是否正確適合MVC模式。我目前的想法是有一個控制器管理狀態,並持有商店的各種實例,所以他們不直接綁定到視圖,但他們仍然可以訪問事件調用和其他控制器。這是一個很好的解決方案還是我錯過了什麼?

回答

1

好吧,你的問題有很多。首先,我認爲你有點過度思考商店。最終,商店只是模型實例的緩存。因此,根據應用程序的需求,您可以創建所需的任意多個實例。如果您想嘗試使用單一商店來管理整個數據集,您當然可以這樣做,但您必須非常清楚和警惕地跟蹤您在整個流程中應用的過濾器/分揀機/等等。你的申請。

回覆:您的應用程序數據的規模,我強烈建議不要試圖同時加載所有模型實例(當然取決於數據的大小和複雜性)。除非您實際上始終需要應用程序中可用的所有實例,否則我會採用僅根據場景加載所需內容的方法。如果您需要訪問數千條記錄,則始終可以應用遠程過濾器來處理服務器端的整個數據集,但只能實際與客戶端的一部分數據交互。最終,我不會太擔心特定的方法是否「適合」MVC模式(這本身就是Ext JS中的一種非常特別的味道,這是所有人都不希望的味道......)。是的,你想創建一個可擴展和可管理的方法;然而,我認爲您的應用程序的需求應該推動您如何利用Ext JS 4提供的MVC約定,而不是讓MVC約定確定您的業務需求。

相關問題