Компонент ауры без какого-либо элемента DOM?

На странице " Начало работы" Aura.js (которая в данный момент недоступна, так что это ссылка на кеш Google) говорится следующее:

Другой способ запуска компонентов при запуске приложения - это явная передача списка в метод app.start. Пример:

`app.start([{ name: 'hello', options: { el: '#hello' } }]);`

Все перечисленные компоненты ДОЛЖНЫ иметь как минимум name и options.el, где name - имя запускаемого компонента, а options.el - селектор DOM, предназначенный для элемента DOM, который будет корнем вашего компонента.

Таким образом, кажется, что Aura требует, чтобы каждый модуль / компонент ДОЛЖЕН был иметь связанный элемент DOM. Это верно?

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

Мне нравится философия, лежащая в основе Aura.js (посредник / модули + MVC), но я не очень хочу ее взламывать. Любые идеи действительно будут оценены. Может я что-то неверно истолковал? Может быть, есть лучшая основа для меня?

Спасибо!

1 ответ

Решение

Компонент требует связанный элемент DOM, но он не требует, чтобы элемент DOM был виден на странице, просто доступен в DOM. Вы можете создать место для размещения ваших невидимых компонентов, например:

$("body").append('<div id="invisbleComponents" style="display:none"></div>');

Затем вы можете создать метод для запуска ваших компонентов и автоматически помещать их в ваш невидимый div:

var startComponent = function(c) {
    $('<div data-aura-component="' + c + '" id="' + c + 'Options"></div>').appendTo("#invisibleComponents);
    app.start([{ name: c, options: { el: '#' + c + 'Options' } }]);
};

Итак, чтобы запустить компонент под названием "myComponent", вы просто делаете вызов:

startComponent('myComponent');
Другие вопросы по тегам