Я пишу несколько классов-оболочек вокруг основания zurb. Фундаментальные виджеты нуждаются в функции init()
, которая будет вызвана после добавления элементов в DOM.GWT - запускать команду ровно один раз за цикл событий
я могу сделать это достаточно легко с помощью этого метода:
public static void initWidgets() {
Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
@Override
public void execute() {
foundationInit();
}
});
}
... где foundationInit()
призыв JSNI к фундаментной init()
функции. Затем я добавляю вызов в initWidgets()
в конструктор любого элемента фундамента. Все идет нормально.
Однако, если в DOM в течение определенного цикла событий добавлено несколько виджетов элементов, то метод init()
будет вызываться несколько раз. Фонд на самом деле не заботится об этом, но было бы неплохо найти способ обойти это.
Есть ли какой-либо планировщик/шаблон, который позволил бы мне запланировать определенную команду для запуска только один раз, независимо от того, сколько раз метод расписания вызывается с помощью этой команды?
Что-то вроде: scheduleDeferredIfNotAlreadyScheduled(Command c)
Я не знаю, как получить ручку на цикл событий, так что я не знаю, как сбросить флаг, который бы сказать мне или нет, чтобы добавить команду или нет.
Спасибо. Однако это не работает, если вставлен другой элемент фундамента без полного обновления страницы. То есть «инициализированный» флаг будет отключен и больше не будет запущен. foundationInit() должен запускаться каждый раз, когда я вставляю элементы в dom. – user717847
Извините, я не понял ваш вопрос. Думаю, теперь я это делаю. См. Мой измененный ответ. –
Извините, я не вижу редактирования. Инициализированный никогда не будет переключен обратно на false, поскольку код в настоящее время стоит. – user717847