我有两个没有直接连接的元素(没有主机子关系)。我想在它们之间共享一些信息,因为双向数据绑定不是最佳的。我想到了持久会话变量(就像Meteor中存在的那样),在Polymer 1.0中有类似的东西吗?如果没有,有人可以向我推荐一个可行的解决方案。
修改
我刚刚发现了iron-signals,但文档说明应该避免,有人可以解释为什么要避免它吗?如果有人通过一个例子写了一个如何使用它的例子,我也会感激。
修改
我在Polymer Summit 2015中与Polymer团队讨论过这个问题。这是一个更大问题的一部分,如何构建我的应用程序。他们在峰会上谈到了调解员模式。我建议您在峰会上观看talk并访问code in Github。
答案 0 :(得分:2)
我最近刚看了一眼铁信号。它对于松散耦合的距离分量之间的通信很有用。它提供“事件总线”类型功能。我相信你在铁信号文件中看到的警告(“注意:避免使用铁信号,无论何时你可以使用控制器(父元素)来调解通信。”)是为了防止过度 - 在普通的Polymer属性绑定可以完成这项工作的简单情况下使用。在铁信号文档中包含的注释的上下文中,父元素(“控制器”)是通信子元素的绑定范围。
此外,铁信号与持久会话变量无关。那里有两个独立的问题。
答案 1 :(得分:2)
我刚发现这个video(我与解释概念的确切分钟和秒相关联),这完全解释了我想要的效果。 Mowzer发布的答案之间的主要区别在于,您将整个应用程序包装在模板中,并通过观察者访问属性,这是一个更容易理解的概念。 我认为视频很容易理解,所以我不会在这里做太多解释。
答案 2 :(得分:1)
对于使用<iron-signals>
的某些编码示例,您可能需要查看此Stack Overflow question and its answers。
它并不像它最初看起来那么复杂。 Study this documentation和this demo。
这是一个简单的两步过程:
点击iron-signal
这样的事件:
this.fire('iron-signal', {name: 'hello', data: 'kitty'});
侦听具有相同名称的iron-signal
事件(在本例中为hello
)。
像这样:
<iron-signals on-iron-signal-hello="doSomething"></iron-signals>
答案 3 :(得分:1)
此外,here is another related question and answer包含工作代码示例。只有他们引用<iron-meta>
和<iron-local-storage>
。