2012-06-29 68 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

一般情况下,尽量在组件之间共享任何内容,包括其商店和模型实例。 你可以故意分享模型,但不要默认这样做。 –