Javascript 为聚合物元件提供数据

Javascript 为聚合物元件提供数据,javascript,html,data-binding,polymer,web-component,Javascript,Html,Data Binding,Polymer,Web Component,我想有一个单一的来源提供我的所有数据。一个模型,如果你愿意,我希望我的元素能够利用这些数据,但永远不要改变它(单向数据绑定)。我该怎么办?我应该将数据作为行为添加吗 我在文档中尝试过这样做: <script type="text/javascript" src="/data.js"></script> <!-- defines a global object named DATA --> <my-element data="{{DATA}}">&l

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

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

<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>

聚合物({
是‘我的元素’,
特性:{
数据:对象
},
就绪:函数(){
console.log(this.data);
}
});
但它似乎不起作用,this.data的值实际上是“{data}”


我正在寻找一种比将元素声明封装在
dom绑定
模板

中更好的解决方案。要使用数据绑定,您需要在聚合元素或dom绑定元素中使用它。请参见说明。如果您使用dombind,那么这只是使用js将数据设置为dombind模板元素“DATA”上的属性的一种情况,这可能是一个小代码

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

使用行为的一个例子是:

<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>

{{data.sth}
聚合物({
是:“一个元素”,
行为:[数据行为]
});
其行为是:

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

数据行为={
就绪:函数(){
this.data={'sth':'一件事!一件光荣的事!';
}
}

但在您的情况下,
此.data
将设置为您的
数据
全局。

使用
[]或
]
[]在元素或主文档之间共享变量。

我理解这一点。我正在进行的
Polymer
函数调用位于Polymer元素的脚本标记内。问题是,
位于Polymer元素或dom绑定之外,因此它不知道什么是数据或数据绑定。最好的办法是将数据全局设置为元素属性,完全忽略元素外的数据绑定,最有可能使用行为。您能提供一个示例,说明我如何使用行为实现这一点吗?