没有任何 DOM 元素的 Aura 组件?
Aura component without any DOM element?
在 Aura.js 'Getting Started' 页面(目前已关闭,所以这是一个 Google 缓存 link)它说了以下内容:
The other way to start components on application start is to
explicitly pass a list to the app.start method. Example:
`app.start([{ name: 'hello', options: { el: '#hello' } }]);`
All listed components MUST have at least the name and options.el
defined, where name is the name of the component to start and
options.el is a DOM selector to target the DOM Element that will be
the root of your component.
因此,Aura 似乎要求每个 module/component 必须有一个关联的 DOM 元素。对吗?
在我的应用程序中,我希望有一些模块纯粹用于 运行 长背景计算,不应与任何 DOM 元素相关联。他们将计算结果发送给其他处理显示的模块。
我喜欢 Aura.js (mediator/modules + MVC) 背后的哲学,但我真的不想对它进行过多的修改。任何见解将不胜感激。也许我误解了什么?也许有更适合我的框架?
谢谢!
该组件需要关联的 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');
在 Aura.js 'Getting Started' 页面(目前已关闭,所以这是一个 Google 缓存 link)它说了以下内容:
The other way to start components on application start is to explicitly pass a list to the app.start method. Example:
`app.start([{ name: 'hello', options: { el: '#hello' } }]);`
All listed components MUST have at least the name and options.el defined, where name is the name of the component to start and options.el is a DOM selector to target the DOM Element that will be the root of your component.
因此,Aura 似乎要求每个 module/component 必须有一个关联的 DOM 元素。对吗?
在我的应用程序中,我希望有一些模块纯粹用于 运行 长背景计算,不应与任何 DOM 元素相关联。他们将计算结果发送给其他处理显示的模块。
我喜欢 Aura.js (mediator/modules + MVC) 背后的哲学,但我真的不想对它进行过多的修改。任何见解将不胜感激。也许我误解了什么?也许有更适合我的框架?
谢谢!
该组件需要关联的 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');