2

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

  • tab1:对象的数据(假设是 ca)
  • tab2:同一物体的图像。

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

我的问题是:

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

信息:

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

1 回答 1

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),前提是商店在呈现时与其选项卡一起创建。

于 2013-06-12T02:50:13.930 回答