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绑定之外,因此它不知道什么是数据或数据绑定。最好的办法是将数据全局设置为元素属性,完全忽略元素外的数据绑定,最有可能使用行为。您能提供一个示例,说明我如何使用行为实现这一点吗?