2012-06-29 102 views
1

需要EXT JS應用程序設計建議。這裏是我到目前爲止的示意圖:EXT JS應用程序設計建議

http://screencast.com/t/RCdve5dO2

我有一個窗口,用工具欄。在tb上有3個菜單,一個按鈕和一個商店來跟蹤一些信息。窗口本身是一個基於菜單值的按鈕點擊而改變的圖像。我有一個菜單處理程序。

這一切工作正常,以及與一個窗口。

我遇到的問題是我可以在拖放事件(從左邊的樹拖動)上創建窗口的多個實例。當多個窗口打開時會出現某種菜單衝突。在另一個窗口上選擇一個項目時,一個窗口上的菜單會中斷。像這樣:

http://screencast.com/t/bbJ8RjlQK1b1

它似乎窗口的所有實例似乎都共享相同的處理器,或者每個窗口共享同一菜單中的實例嗎?我需要調查。

我的問題:

所以退一步,要求是每個重複的窗口(並可能有許多)必須獨立運作。從設計的角度來看,最好的方法是完成這個任務?

回答

2

讓我猜測,您正在爲initComponent函數外的組件類定義對象或數組。

你可以發佈你的代碼嗎?對於initComponent

Ext.define('SomeComponent', { 

    extend:'SomeOtherComponent', 

    title:'a string is a primitive type. so is a number', 

    initComponent: function(){ 

    Ext.applyIf(this, { 
     someNonPrimitiveProperty:{ text:'arrays and objects are non-primitive' } 
    }); 

    this.callParent(arguments); //always call this 

    } 
}); 
+0

+1:

你應該申報所有非primatives內initComponent這樣。我在Sencha論壇上閱讀過這篇文章。但我正在尋找更高層次的架構觀點。 –

+0

一般情況下,儘量在組件之間共享任何內容,包括其商店和模型實例。 你可以故意分享模型,但不要默認這樣做。 –