Aura组件没有任何DOM元素?

时间:2015-03-08 23:51:41

标签: javascript model-view-controller scalability aura.js

在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),但我并不想真正想要破解它。真的很感激任何见解。也许我误解了什么?也许这对我来说是一个更好的框架?

谢谢!

1 个答案:

答案 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');