我在另一个元素中调用聚合物元素。内部聚合物元素具有公开的属性,我从母体聚合物结合JSON。然而,它没有得到反映。
<polymer-element name="parent-test" attributes="testData">
<template>
This is Parent test
<child-test testdatachild="{{testData}}"></child-test>
</template>
<script>
Polymer('parent-test', {
testData: [],
ready: function () {
debugger;
this.testData = [1, 2, 3, 4]
}
});
</script>
</polymer-element>
<polymer-element name="child-test" attributes="testDataChild">
<template>
<!--{{testDataChild}}-->
<template repeat="{{test in testDataChild}}">
{{test}}
</template>
</template>
<script>
Polymer('child-test', {
testDataChild: [],
ready: function () {
debugger;
}
});
</script>
</polymer-element>
我不确定这里会出现什么问题。
编辑: 好像我在生成child-polymer-element时没有实际的parentContent。 如果我在this.parentContent的ready函数中分配硬编码值,它也不起作用。 如果我为这个parent.Content在create function中分配硬编码值,它就可以了。 因此,我不确定这是否与在将值绑定到父级之前生成子聚合物元素有关。
谢谢, 萨姆
答案 0 :(得分:2)
我修改了你的plunk示例并让它在没有你的解决方法的情况下工作: Plunk
<polymer-element name="child-test" attributes="testdatachild">
<template>
<br><br>
In Child el.:
<br>
<template repeat="{{test in testdatachild}}">
{{test}}
<br>
</template>
</template>
<script>
Polymer('child-test', {
ready: function () {
}
});
</script>
This is Parent test
<child-test testdatachild="{{testData}}"></child-test>
<br>
</template>
<script>
Polymer('parent-test', {
created: function () {
this.testData = [1, 2, 3, 4];
}
});
</script>
主要问题似乎是代码的顺序 我想首先声明孩子,然后父母,因为孩子在父母中使用它更好... 另外,如聚合物文件中所述: polymer
重要说明:对于作为对象或数组的属性,应始终初始化创建的回调中的属性。如果直接在原型(或发布对象)上设置默认值,则可能会在同一元素的不同实例中遇到意外的“共享状态”。
答案 1 :(得分:1)
以下是有效代码的修改示例:Plunk
为什么你的例子不起作用,我没有所有答案买你是对的:
<!-- This won't work cause:
"Attributes on child-test were data bound prior to Polymer upgrading the element.
This may result in incorrect binding types." -->
This is Parent test
<child-test testdatachild="{{testData}}"></child-test>