使用JSON作为参数调用polyment中的聚合物元素

时间:2015-01-30 12:22:16

标签: polymer

我在另一个元素中调用聚合物元素。内部聚合物元素具有公开的属性,我从母体聚合物结合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中分配硬编码值,它就可以了。 因此,我不确定这是否与在将值绑定到父级之前生成子聚合物元素有关。

谢谢, 萨姆

2 个答案:

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