【问题标题】:Providing data to Polymer elements向 Polymer 元素提供数据
【发布时间】:2015-12-08 15:00:49
【问题描述】:

我希望单一来源提供我的所有数据。一个模型,如果你愿意的话,我希望我的元素能够利用这些数据,但永远不要改变它(单向数据绑定)。我该怎么办?我应该将数据添加为行为吗?

我尝试在我的文档中这样做:

<script type="text/javascript" src="/data.js"></script> <!-- defines a global object named DATA -->
<my-element data="{{DATA}}"></my-element>

这在 my-element.html 中

<dom-module id="my-element">
  <template></template>
  <script>
    Polymer({
      is: 'my-element',
      properties: {
        data: Object
      },
      ready: function () {
        console.log(this.data);
      }
    });
  </script>
</my-element>

但它似乎不起作用,this.data 的值实际上是“{{data}}”。

我正在寻找比将元素声明包装在 dom-bind 模板中更好的解决方案

【问题讨论】:

    标签: javascript html data-binding polymer web-component


    【解决方案1】:

    要使用数据绑定,您要么需要在聚合物元素内使用它,要么在 dom-bind 元素内使用它。见解释here。如果你使用dom-bind,只是使用js将DATA设置为dom-bind模板元素上的属性,可能是'data',这将是很少的代码。

    本质上,您不能设置全局并期望数据绑定知道它。您需要通过在元素上设置一个属性来告诉 dom-bind 关于它或关于它的元素,可能使用行为,如您所建议的,或者使用 Mowzer 的方法。

    使用行为的一个例子是:

    <link rel="import" href="databehaviour.html"> 
    <link rel="import" href="bower_components/polymer/polymer.html">
    
    <dom-module id="an-ele">
    
        <style>
        </style>
        <template>
            <div>{{data.sth}}</div>
        </template>
        <script>
            Polymer({
                is: "an-ele",
                behaviors: [DataBehaviour]
            });
        </script>
    
    </dom-module>
    

    行为是:

    <script>
        DataBehaviour = {
            ready: function() {
                this.data = {'sth':'A thing! A glorious thing!'};
            }
        }
    </script>
    

    但在您的情况下,this.data 将设置为您的 DATA 全局。

    【讨论】:

    • 我明白这一点。我正在进行的 Polymer 函数调用位于 Polymer 元素的脚本标记内。
    • 问题是,&lt;my-element data="{{DATA}}"&gt;&lt;/my-element&gt; 在聚合物元素或 dom 绑定之外,因此它不知道 DATA 是什么,或者数据绑定是什么。
    • 最好的办法是将 DATA 全局设置为元素属性,完全忽略元素外部的数据绑定,使用最有可能的行为。
    • 你能举个例子说明我如何通过行为做到这一点吗?
    【解决方案2】:

    使用&lt;iron-meta&gt; [link] 或&lt;iron-localstorage&gt;] [link] 在元素或主文档之间共享变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 2015-08-30
      • 2018-09-16
      相关资源
      最近更新 更多