【问题标题】:Extjs Saving Dynamic Tabs and Rendering them back on Page Load, is it possible?Extjs 保存动态选项卡并在页面加载时重新呈现它们,这可能吗?
【发布时间】:2013-03-27 18:38:19
【问题描述】:

我正在使用 Extjs 动态添加新选项卡。但是有没有办法可以将新添加的选项卡保存在某处(可能在数据库中),因为我必须呈现用户动态创建的所有选项卡,每当用户重新-访问该页面。

我可以制作标签,将标签的状态保存在cookie中。但我知道,为了保存新创建的标签的状态,我必须先保存Html(?)sn-p某处的标签?

这是我的代码:

var tab;
var tabIndex = 0;
var tabArray = [];

Ext.application({
  launch: function() {
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider({
      expires: new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 7))
    }));
    Ext.create('Ext.container.Viewport', {
      layout: 'absolute',
      items: [{
        x: 50,
        y: 50,
        width: 300,
        height: 300,
        xtype: 'tabpanel',
        stateful: true,
        stateId: 'tp1',
        stateEvents: ['tabchange'],
        getState: function() {
          return {
            activeTab: this.items.findIndex('id',this.getActiveTab().id)
          };
        },
        applyState: function(s) {
          this.setActiveTab(s.activeTab);
        },
        items: [{
          id: 'c0',
          title: 'Tab One'
        }, {
          id: 'c1',
          title: 'Tab Two'
        }, {
          id: 'c2',
          title: 'Tab Three'
        }],
        bbar: [
                  {
                      text: 'Add Tab',
                      //region: 'south',
                      xtype: 'button',
                      handler: function () {
                          var tabs = this.up('tabpanel');
                          tab = tabs.add({
                              title: 'Tab ',
                              closable:true,
                              xtype:'panel',
                              width: '100%',
                              height: '100%',
                              items: []                                                 
                          }).show();
                      }
                  }
              ]
        }]
    });
  }
});

我想在这里做一些不切实际的事情吗?或者是否有可能以某种方式存储新创建的选项卡并在页面加载时使用新创建的选项卡呈现整个选项卡?

我很抱歉问了这么广泛的问题:)

谢谢。

【问题讨论】:

    标签: javascript extjs tabs state state-saving


    【解决方案1】:

    我过去做过类似的事情。这就是我们的设计方法。 含糊不清,但我们还是这样做了

    当您动态创建一个选项卡并向其中添加项目(面板/输入字段)并更改这些项目的值(例如在文本框中输入文本,选中复选框)并且当您最终点击保存时,我们将提取所有数据为 JSON。

    您需要根据需要保存的值自定义构建 - 例如项目的类型、值、其子结构等。

    然后,当您想要重新渲染页面时,您可以使用 JSON 来构建它。构建这个解决方案并不容易。但是,一旦你完成了,它就可以在所有选项卡中重复使用——无论动态如何。

    最后,它绝对有可能

    【讨论】:

    • 您还不想拥有某种知道将项目放在哪里的 HTML sn-p 吗?你真的不能只渲染一个 Json,因为它是对的?我的目标是创建选项卡,每个选项卡都有一个门户面板,并且门户面板内的用户添加的 portlet 基本上填充了每个选项卡。我的应用程序必须记住他拥有多少个选项卡以及他拥有动态更新的 portlet 的数量和类型:|对我来说似乎有点不切实际,但我相信这有点可能I'd be grateful if you could provide a small snippet as an extension to my code above for storing the Json thing谢谢
    • 我想说的是我们需要重建基于 JSON 的 ExtJs 组件。我们不能这样渲染 JSON。
    • 提取 JSON 并不是您即时执行的操作。您需要手动构建 JSON。我手头没有代码。您需要做的是遍历选项卡的子项并手动创建 JSON
    • 好吧..我将尝试通过迭代子组件来构造 Json,并将它们保存在每个用户的数据库中:) 希望有效.. 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    相关资源
    最近更新 更多