定制聚合物元素中的双向粘合剂

时间:2017-03-06 17:31:06

标签: html data-binding properties polymer custom-element

我想模拟部分代码。我已经创建了一个可以使用Array和Number的自定义元素。使用双向绑定时,这应该不是问题。它是。似乎孩子在准备之前获得了财产。

<link rel="import" href="custom-element.html">

<dom-module id="is-parent">
    <custom-element p1="{{p1}}"></custom-element>
    <script>
        Polymer({
            is: 'is-parent',
            properties: {
                p1:{
                    type: Number,
                    notify: true,
                    observer:"obsParent",
                    value:0,
                },
            },
            obsParent: function(newValue, oldValue) {
                console.log(oldValue);
                console.log(newValue);
                console.log(this.p1);
            },
            ready: function(){
                this.p1= 0;
            },
    </script>
</dom-module>


<dom-module id="is-child">

    <script>
        Polymer({
            is: 'is-child',
            properties: {
                p1:{
                    notify: true,
                    observer:"obsChild",
                },

                p2:{
                    type: Boolean,
                    computed: 'p2Computer(p1)',
                },

            },
            obsChild: function(newValue, oldValue) {
                console.log(oldValue);
                console.log(newValue);
                console.log(this.p1);
            },

            p2Computer:function(p1){
                if(p1===0){
                    return true;
                }
                return false;
            },
            ready: function(){
                console.log(this.p1);
            },
    </script>
</dom-module>

我的双向绑定属性在子节点中设置为undefined,在父节点中设置为0。这个例子大大简化了,但是我的测试支持了我的主张,即即使在父级中设置为0,子级也会获得未定义的属性。

1 个答案:

答案 0 :(得分:1)

由于某些原因,您有prop1作为正在编辑的属性,但如果您希望它绑定到is-child的p1,则应该p1

<custom-element prop1="{{p1}}"></custom-element>

<custom-element p1="{{p1}}"></custom-element>