聚合物1.0:动态铁元值和同步化

时间:2016-03-21 14:09:38

标签: javascript polymer-1.0

寻找有关Polymer的一些建议以及如何正确地在元素之间共享。

我的目标是一次加载和处理一组数据,并在聚合物组件之间共享该数据。我尝试过创建聚合物元素' load-data'获取数据,格式化数据,然后将结果存储为iron-meta标记。

<dom-module id="load-data">
  <template>
    ...
    <div id="metatags"></div>
    <iron-ajax ....on-response="handleResponse"></iron-ajax>
  </template>
</dom-module>

<script>
  Polymer({

    is: 'load-data',

    ...
    handleResponse: function (data) {

      // do stuff
      var processed_data = document.createElement('iron-meta');
      processed_data .setAttribute('key','processed-data');
      processed_data .setAttribute('value',JSON.stringify(processed_data));
      this.$.metatags.appendChild(processed_data); // metatags refers to a div in local dom
      ...
    }
  }
</script>

然后,我将加载数据&#39;在其他自定义元素中假设我现在可以访问我需要的数据(通过iron-meta-query)。

<dom-module id="a-visualization">
  <template>
    ...
    <load-data></load-data>
    ...
  </template>
</dom-module>

<script>
  Polymer({

    is: 'a-visualization',

    ...
</script>

最后,我在我的网页上多次使用我的元素......以及我发现问题的地方。

...
<a-visualization id="first"></a-visualization>
<a-visualization id="second"></a-visualization>
...

因此,当加载第一个a-visualization元素时,会创建load-data并进行异步调用以获取数据。浏览器继续执行并加载第二个a-visualization元素。在这一点上,理想情况下我希望第二个元素等到第一个元素加载数据......当前正在进行的操作。

我可以在第一次遇到load-data时设置一个标志,并在第二次调用load-data时检查该标志,但是我仍然不知道何时继续处理第二个元素。从标志我可以看出加载过程已经开始...但除非我轮询/睡眠/民意调查感觉是一个糟糕的方法,第二个元素不知道何时再次开始处理。我想我真的需要让第一个load-data实例执行一个回调来通知第二个元素已完成,但我不知道该怎么做。

而且,我并不确定我的一般方法是否合适。我绝不是聚合物或网络专家。试着玩得开心! : - )

您如何推荐我在Polymer中处理它?<​​/ p>

0 个答案:

没有答案