Ext JS 4: Как создать строку, содержащую уже созданный код определенного объекта?

#javascript #extjs

#javascript #extjs

Вопрос:

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

Мне нужен способ прочитать код созданного виджета, чтобы я мог сохранить его в базе данных в виде строки (я думаю, это лучший способ, поскольку впоследствии использование eval() может помочь загрузить сохраненные виджеты).

Заранее спасибо.

Ответ №1:

Нет, я не думаю, что вы можете это сделать, или крайне неэффективно.

Лучшим способом было бы определить, какие данные вам нужно будет сохранить, чтобы воссоздать их из простой конфигурации.

Например, у меня есть система блогов, и в ней у нас есть 4 разных набора виджетов, а именно TextWidget , RSSWidget , BlogRollWidget , MetaWidget

Все эти виджеты унаследованы от базового класса Widget и организованы родительским классом called Widgets . Затем этот Widgets класс будет иметь возможность считывать исходную конфигурацию и заново создавать виджеты на основе type , а также некоторые другие данные, необходимые для каждого отдельного виджета.

Такая строка конфигурации может быть примерно такой:

 {
    widgets: [{
        type: 'text',
        x: 30,
        y: 80,
        text: 'The quick brown fox jumps over the lazy dog'
    },{
        type: 'blogroll',
        x: 60,
        y: 120,
        links:[{
            title: 'Google',
            link: 'http://www.google.com'
        }]
    },{
        type: 'meta',
        x: 80,
        y: 60
    }]
}
 

Таким образом, у вас есть возможность воссоздавать виджеты разных типов на основе конфигурации, и в то же время вы можете просто stringify использовать ее и сохранить в своей базе данных.