#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
использовать ее и сохранить в своей базе данных.