Extjs Сохранение динамических вкладок и их рендеринг при загрузке страницы, возможно ли это?

Я динамически добавляю новые вкладки с помощью Extjs. Но есть ли способ сохранить недавно добавленные вкладки где-нибудь (возможно, в базе данных), потому что мне нужно отображать все вкладки, которые пользователь создает динамически, всякий раз, когда пользователь повторно посещает страницу .

Я могу создавать вкладки, сохранять состояние вкладок в файле cookie. Но я знаю, что для сохранения состояния вновь созданной вкладки мне нужно сначала где-то сохранить фрагмент Html (?) Вкладки?

Вот мой код:

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();
                      }
                  }
              ]
        }]
    });
  }
});

Я пытаюсь сделать что-то нереальное здесь? или можно каким-то образом сохранить вновь созданные вкладки и отобразить всю панель вкладок с вновь созданными вкладками, как это происходит при загрузке страницы?

Прошу прощения за столь широкий вопрос :)

Спасибо.


person First Blood    schedule 27.03.2013    source источник


Ответы (1)


Я делал нечто подобное в прошлом. Вот такой подход к дизайну у нас был. Это расплывчато, но мы все же сделали это

Когда вы динамически создаете вкладку и добавляете в нее элементы (панели/поля ввода) и изменяете значение этих элементов (например, ввод текста в текстовое поле, установка флажка), и когда вы, наконец, нажимаете «Сохранить», мы извлекаем все данные как JSON.

Вам нужно создать пользовательскую сборку на основе того, какие значения вам нужно сохранить, например, тип элемента, значение, его дочерняя структура и т. д.

Затем, когда вы хотите повторно отобразить страницу, вы используете JSON для ее создания. Построить это решение непросто. Но, как только вы закончите, его можно будет использовать повторно для всех вкладок, каким бы динамичным он ни был.

И, наконец, определенно возможно

person hop    schedule 27.03.2013
comment
Вы все еще не хотите иметь какой-то фрагмент HTML, который знает, куда поместить элементы? Вы не можете просто отобразить Json так, как это правильно? Моя цель - создать вкладки, и каждая вкладка имеет панель портала и портлеты добавления пользователя внутри панели портала, по существу заполняющие каждую вкладку. Мое приложение должно помнить, сколько у него вкладок и сколько и какие типы портлетов у него есть, которые динамически обновляются: | Мне это кажется немного нереальным, но я верю, что это возможно I'd be grateful if you could provide a small snippet as an extension to my code above for storing the Json thing Спасибо. - person First Blood; 27.03.2013
comment
Я пытался сказать, что нам нужно перестроить компоненты ExtJs на основе JSON. Мы не можем отображать JSON как таковой. - person hop; 27.03.2013
comment
И извлечение JSON — это не то, что вы делаете на лету. Вам нужно вручную создать JSON. У меня нет кода под рукой. Что вам нужно сделать, это перебрать дочерние элементы вкладки и вручную создать JSON - person hop; 27.03.2013
comment
Хорошо .. Я попытаюсь создать Json, перебирая дочерние компоненты, и сохраню их в базе данных для каждого пользователя :) Надеюсь, это сработает .. Спасибо! - person First Blood; 28.03.2013