dom-repeat中元素中的聚合物更改未反映在父数组上

时间:2015-08-04 18:40:56

标签: javascript polymer web-component polymer-1.0

我对聚合物有一个非常奇怪的问题,这些是解释它的相关代码片段:

<dom-module is="...">
<template is="dom-repeat" items="{{row.data}}" as="elem" index-as="col_no">
    <div class="entry">
        <div>[[elem]]</div>
        <input value="{{elem::input}}"></input>
    </div>
</template>
</dom-module>
<script>
Polymer({
    is: '...',
    properties: {
        /**
        * It's an object like this:
        * {data: [1, "column2", "column3"] /* and other things relevant for other parts of the app*/}
        */
        row: { 
            type: Object,
            notify: true,
            reflectToAttribute: true
        }
    }
});
</script>

我的问题是,如果我更改输入上的值,它在dom上反映得很好,我也可以在div上看到结果,但是如果我尝试在其他代码片段上获取row属性(比方说,即使是简单的console.log(this.row)),它仍然包含原始值。

我认为reflectToAttribute会有所帮助,但它没有做任何不同的事情,我也尝试添加像observers: ['_test(row.data.*)']这样的观察者,但在使用输入编辑数组元素时从未调用它。

我认为这可能是因为我的数组在一个对象中,也许这只是弄乱dom-repeat的数据绑定如何做事情,但我还没有找到任何实际确认的内容。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

您的数据似乎不是对象的一部分。可能是你的代码中你指的是数据而不是row.data?

这是带有console.log的jsbin,反映了行对象的变化 - http://jsbin.com/nijixocaku/1/edit?html,console,output