绑定当元件被结合到在存储器相同的对象(Bindings when elements are boun

2019-10-23 12:24发布

我有一个情况我有其下方绑定到相同的路径并且因此相同JS对象的多个元件。 正因为如此,在一个地方更改对象立即被其他元素可见(虽然它不知道它)。 文档说我需要手动提醒系统信息或者使用一个自动绑定,对此我。 所以notifyPath呼叫正在发生的事情。

notifyPath DOM遍历它最终接近它应改变反应的元素,但是notifyPath代码做一个检查,以查看该元素已经知道了变化 。 在我的情况,因为它们都指向同一个对象JS的old值已经是new价值,因为他们是从字面上内存中的同一个对象。 这将停止改变的传播。

我已经提交了这个问题作为一个潜在的问题 ,但好奇在此期间,围绕它的方式。

这是问题的一个JSBin: http://jsbin.com/hemexifami/2/edit?html,output

这似乎是这种事情会是一个常见的情况。 我已经试过手动notifyPath在控制台直接-ing的元素,它传递的数组,但是代码只是看到那oldnew (因为它们都是同一个JavaScript数组,所以它实际上并没有做任何事情。该文件说,它应该返回的这个指示,但它实际上并没有。见我有关该错误在这里 。

你们中前战斗呢? 在此先感谢您的帮助!

Answer 1:

聚合物不遵守对象引用本身,而是对性能,它跟踪基于你如何为它们命名对象的变化以及它们是如何相互关联的树

dev的指南中这里的部分讨论了如何使用array-selector元件在阵列和对象的绑定选择之间进行协调:

https://www.polymer-project.org/1.0/docs/devguide/templates.html#array-selector

如果我们增加一个array-selector ,它知道元素card.sections它会产生一个可绑定版本currentSection你。

<array-selector id="selector" items="{{card.sections}}" selected="{{currentSection}}"></array-selector>

我们还添加了一些代码来告诉选择器项目选择指标的变化时:

    observers: [
      '_selectSection(card.sections, currentSectionIndex)'
    ],

    _selectSection(sections, index) {
      this.$.sectionSelector.select(sections[index]);
    }        

下面是使用阵列选择您jsbin的修改: http://jsbin.com/qidehe/edit?html,output



文章来源: Bindings when elements are bound to same object in memory