dom-repeat中元素的聚合物变化不反映在父数组中

Polymer change in an element in a dom-repeat not reflected on parent array

本文关键字:数组 变化 元素 聚合物 dom-repeat      更新时间:2023-09-26

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

<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上的结果,但是如果我试图在其他代码块上获得行属性(比如,甚至是一个简单的console.log(this.row)),它仍然包含原始值。

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

我认为这可能是因为我的数组在一个对象内,也许这只是搞砸了dom-repeat的数据绑定的方式,但我还没有发现任何实际证实这一点的东西。

看起来您的data不是row对象的一部分。可能是在您的代码中,您指的是数据而不是row.data?

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