在 Polymer 1.0 中 dom-repeat 中的双向绑定问题

Issue with two-way binding inside dom-repeat in Polymer 1.0

我有一个简单的template像这样

<template is="dom-repeat" items="[[items]]">
    <paper-button active="{{item.selected}}" toggles raised>
        <span>[[item.selected]]</span>
    </paper-button>
</template>

如果我通过点击激活列表中的第一个 paper-button 然后调用

this.set('items.0.selected', !this.items[0].selected);

它被停用了。

但是如果我再次尝试上述确切步骤,按钮不会停用,这会使按钮状态和 selected 值不同步。

为什么要这样做?该问题可以在 here.

上重现

有趣的问题。所以我尝试使用单个 paper-button 绑定到单个 item 实例,结果证明它工作正常,这让我想到它可能与数组内的路径绑定有关。

然后我向 paper-button 添加了一个 tap 处理程序,每次点击它时,在 selected 子属性路径上使用其自身的值执行 notifyPath -

this.notifyPath('items.0.selected', this.items[0].selected);

并且 it 有效。