在Aura.js' Getting Started'页面(目前处于关闭状态,因此它是Google缓存链接),它说明了以下内容:
在应用程序启动时启动组件的另一种方法是 显式地将列表传递给app.start方法。例如:
`app.start([{ name: 'hello', options: { el: '#hello' } }]);`
所有列出的组件必须至少包含name和options.el defined,其中name是要启动的组件的名称 options.el是一个DOM选择器,用于定位DOM元素 组件的根目录。
因此,似乎Aura要求每个模块/组件必须具有关联的DOM元素。这是对的吗?
在我的应用程序中,我希望有一些纯粹用于运行长背景计算的模块,这些模块不应该与任何DOM元素相关联。它们将计算结果发送到处理显示的其他模块。
我喜欢Aura.js背后的哲学(调解员/模块+ MVC),但我并不想真正想要破解它。真的很感激任何见解。也许我误解了什么?也许这对我来说是一个更好的框架?
谢谢!
答案 0 :(得分: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');