我有以下用例。
我的网络项目中的根文件是index.html
。我想创建一个存储用户信息的对象,以便可以从项目中的任何聚合物Web组件访问它,而无需将其明确地传递给任何Web组件。可以这样做吗?这类似于许多面向对象编程语言的Singleton
方法。
谢谢。
答案 0 :(得分:0)
如果您希望任何/所有组件能够访问相同的数据,那么您必须将其设为全局:
window.myData = {};
但在很多层面上这是一个糟糕的主意。
这会将您的所有组件绑定到此数据结构和位置。除非他们愿意管理完全相同的数据结构,否则没有其他人也没有其他应用程序可以使用这些组件。
相反,您需要将所需数据传递到每个组件中。是的,这是更多的工作,但它允许组件在任何地方使用。
如果组件在每种情况下每次都需要获得 EXACT 相同的数据,那么您可以让组件收集数据。
如果数据需要能够来自不同的端点(基于应用程序),那么您需要为组件提供定义其URL的能力。这很像<img>
标记。它具有src
属性。当然,<img>
标记仅显示图像并始终显示图像,但<img>
标记的用户可以设置src
属性或属性,以告知标记在何处获取图像数据。
答案 1 :(得分:0)
iron-meta
元素是为此而设计的,但该元素基本上只是将内容保存到内存中。只需看看元素的作用:
Polymer.IronMeta.getIronMeta = function getIronMeta() { if (singleton === null) { singleton = new Polymer.IronMeta(); } return singleton; };
所以我会继续使用已经建议的解决方案:
window.myData = {};