2015-03-08 4 views
0

На странице Aura.js «Getting Started» (который вниз в данный момент, так что кэш ссылку Google) он говорит следующее:Компонент ауры без какого-либо элемента DOM?

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

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

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

Таким образом, кажется, что Аура требует, чтобы каждый модуль/компонент ДОЛЖЕН иметь связанный элемент 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'); 
+0

Спасибо Стиву - это немного хакерство? Зачем нужен элемент DOM для модулей, которые просто выполняют большие вычисления? – JoeRocc

+0

Joe, как работает Aura, элемент DOM необходим, поскольку Aura использует DOM для определения области компонента. Таким образом, вложенные компоненты понимают их отношения со своими родителями и т. Д. Сила, получаемая от этого, стоит написать три строки кода, чтобы «взломать» анонимные компоненты в DOM. –

+0

О, это интересно, я понятия не имел - откуда вы узнали об этом? «Начало работы» ничего не говорило о сфере охвата. Я думал, что это чисто паб/sub, и каждый модуль полностью независим. – JoeRocc