绑定到Polymer中的全局变量

时间:2016-02-21 03:55:54

标签: javascript polymer comet

我对Polymer很新,只研究了数据绑定的工作原理。我正在移植现有的Dojo应用程序,其中包括:

1)每个网址的单个商店(持有数据)

2)更新商店元素时来自服务器的消息

因此,如果应用程序中的任何位置用户向商店添加了一个项目(保存数据),那么依赖于商店中数据的动态选择框将自动拥有一个额外项目

我试图在Polymer中复制这样的东西。

使用案例:想象一下这样的网址:/app/categories。通过HTTP GET查询,您最终得到了所有可用类别的JSON。在应用程序运行时,服务器可能会通知/ app / categories中的新元素。因此,应用程序中的所有选择将自动具有额外项目。

在Polymer中,我学习了如何将当前元素中的属性绑定到包含元素中的属性。我理解如何在正确的事件被触发时发生这种情况等等。因此,我们的想法是创建一个选项,其中项目由dom-repeat生成,这将被绑定到某个全局变量(? )。

但是......甚至可以将包含元素的属性绑定到"全局"变量,而不是包含元素的属性?

OR,更广泛地说,是否存在一种模式(甚至是已建立的模式)以确保当全局变量发生变化时(感谢彗星消息或其他),将通知一系列绑定到它的元素因此改变了(在这种情况下,"选择"使用dom-repeat来显示项目!)

这是JSBin that shows how to create a menu via iron-ajax此时,JSBin缺少的是关于数据更改的服务器推送模拟,以及让所有菜单同时更新的方法时间。

1 个答案:

答案 0 :(得分:1)

恕我直言,最理智和可维护的模式是单向数据流方法(类似于FluxRedux(这有点简单)。

有一个全局状态对象作为图形结构存在,数据沿组件树向下流动(从根组件开始)。
每个组件都有明确定义的输入属性,并从父组件接收数据(使用数据绑定),并将部分数据传递给其子组件。当一个组件改变状态时,它会触发一个事件,该事件会将组件树冒泡到你的根组件,然后可以更新你的全局状态对象(它再次向你的组件树流下来),与后端进行通信等。

我还可以在Polymer 2015峰会上推荐这个video,它解释了类似的方法(中介模式)。