将对象ID传递给ExtJS窗口

时间:2013-06-11 20:47:01

标签: model-view-controller extjs load extjs4 store

我有一个带有tabpanel的窗口,我在其中布置表单(第一个选项卡)和数据视图(第二个选项卡)。此窗口可能是从网格打开的(例如双击)。这两个标签描述:

  • tab1:对象的数据(让我们说ca)
  • tab2:同一对象的图像。

两个组件(数据视图和表单)中的每一个都有自己的存储(DirectStore)。两个商店都有一个发送到服务器的参数,以便知道哪些字段值或者返回了谁的图像。

我的问题是:

  1. 如何将对象ID从网格传递到窗口
  2. 如何将对象ID传递给选项卡的组件以加载 正确的数据。
  3. 从哪里开始加载上述商店?
  4. 的信息:

    • 我的问题也与最佳实践有关,很好的方式。这将用于MVC应用程序。
    • 我的窗口必须从直接呼叫中获取所有数据。

1 个答案:

答案 0 :(得分:0)

我假设您已经创建了自己的窗口类,它关注在initComponent方法中创建选项卡。由于您的窗口要表示特定对象(即网格行中的记录),因此在创建窗口时将整个记录或其id传递给窗口是有意义的。 您可以在网格上设置事件处理程序,如:

var openObjectWindow = function(view, record) {
    Ext.create('YourWindowClass', {
        objectId: record.getId()
    })
};
grid.on('itemdblclick', openObjectWindow);

当您在窗口initComponent中声明标签时,您会以类似的方式将objectId传递给他们(假设您的标签类已经定义过):

this.defaults = {
    objectId: this.objectId
}
this.items = [
    {
        xtype: 'mydatatab'
    },
    {
        xtype: 'myimagestab'
    }
]

最后,您应该将商店设置为在创建时自动加载(autoLoad: true),前提是商店在呈现时与其标签一起创建。