0

我有以下用例。

我的 web 项目中的根文件是index.html. 我想创建一个存储用户信息的对象,以便可以从项目中的任何聚合物 Web 组件访问它,而无需将其显式传递给任何 Web 组件。这可以做到吗?这类似于Singleton许多面向对象编程语言的方法论。谢谢你。

4

2 回答 2

0

iron-meta元素是为此而设计的,但该元素基本上只是将内容保存到内存中。看看元素做了什么:

Polymer.IronMeta.getIronMeta = function getIronMeta() {
   if (singleton === null) {
     singleton = new Polymer.IronMeta();
   }
   return singleton;
 };

所以我会继续使用已经建议的解决方案:

 window.myData = {};
于 2018-05-17T17:42:49.057 回答
0

如果您希望任何/所有组件能够访问相同的数据,那么您必须将其设为全局:

window.myData = {};

但这在很多层面上都是一个坏主意。

这会将您的所有组件与此数据结构和位置联系起来。除非他们愿意管理完全相同的数据结构,否则没有其他人或其他应用程序可以使用这些组件。

相反,您需要将所需的数据传递到每个组件中。是的,这是更多的工作,但它允许在任何地方使用该组件。

如果组件需要在每种情况下每次都获取完全相同的数据,那么您需要组件收集数据

如果数据需要能够来自不同的端点,基于应用程序,那么您需要为组件提供定义其 URL 的能力。这很像<img>标签。它src有财产。当然<img>标签只显示图像并且总是显示图像,但是<img>标签的用户可以设置src属性或属性来告诉标签从哪里获取图像的数据。

于 2018-04-20T14:35:33.107 回答