聚合物-集数组不更新DOM

泰勒·格拉夫(Tyler Graf)

我正在尝试对聚合物使用单向数据流。因此,我要更新聚合物之外的商店,然后在更新它时触发事件。当我第一次设置数组时,它可以工作。但随后的时间它不起作用。

这是一支笔:http : //codepen.io/tylergraf/pen/EyXZva/

这是代码:

<base href="https://cdn.rawgit.com/download/polymer-cdn/1.5.0/lib/">

<script src="webcomponentsjs/webcomponents-lite.min.js"></script>

<link rel="import" href="iron-icon/iron-icon.html">
<script>
window.theList = [{
  stuff: 'stuff'
}];
</script>
<button id="changeOutside">Increment Value</button>
<parent-element></parent-element>

<dom-module id="parent-element">

  <template>
    <div class="list">
      <template is="dom-repeat" items="[[list]]">
        <child-element item="[[item]]"></child-element>
      </template>
    </div>
  </template>

  <script>
    Polymer({
      is: 'parent-element',
      ready: function(){

        document.addEventListener('dispatch', (e)=>{
          console.log(e.detail);
          // this.list = e.detail;
          this.set('list', e.detail);
        });

      }
    });
  </script>
</dom-module>

<dom-module id="child-element">
  <template>
    <ul>
      <li>Stuff: [[item.stuff]]</li>
    </ul>
  </template>

  <script>
    Polymer({
      is: 'child-element',
      properties: {
        item: {
          type: Object,
          value: {
            stuff: 'stuff',
            things: 'things'
          }
        },
      }
    });
  </script>
</dom-module>

<script>
var changeOutside = document.querySelector('#changeOutside');
var inc = 0;

changeOutside.addEventListener('click', function(){
  var newList = window.theList.map(function(li){
    li.stuff = inc++;
    return li;
  });
  var event = new CustomEvent('dispatch', {detail: newList});
  document.dispatchEvent(event);
})
</script>
乔希(Josh C.)

这里肯定发生了一些奇怪的事情,以下是一种解决方法,但是我很乐意看到Polymer支持这一点。

您的问题是映射中的返回值是现有对象的修改版本。对象引用本身未更改。因此,尽管从地图创建了一个新的Array,但是Object本身并没有改变。

如果您更改此地图

var newList = window.theList.map(function(li){
  li.stuff = inc++;
  return li;
});

到以下内容:

var newList = window.theList.map(function(li){
  return {
    stuff: inc++
  };
});

然后,代码将按预期工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

飞镖聚合物更新聚合物dom元素

来自分类Dev

飞镖聚合物更新聚合物dom元素

来自分类Dev

聚合物“ DOM绑定”更新绑定

来自分类Dev

聚合物:轻型DOM与本地DOM

来自分类Dev

访问聚合物中的DOM

来自分类Dev

聚合物成分影响外部DOM

来自分类Dev

聚合物 2:组件不呈现

来自分类Dev

聚合物-更新元素

来自分类Dev

更新聚合物元素模板

来自分类Dev

聚合物结合性能未更新

来自分类Dev

聚合物动态变化数据数组

来自分类Dev

聚合物动态变化数据数组

来自分类Dev

导入后聚合物更新DOM元素

来自分类Dev

视口刷新后聚合物 DOM 更新

来自分类Dev

聚合物按模型更新数组子属性

来自分类Dev

从DOM中删除聚合物元素并再次插入后如何更新聚合物元素绑定

来自分类Dev

聚合物1嵌套的dom(如果dom重复内)在数据更改时不更新

来自分类Dev

没有阵列的聚合物dom重复

来自分类Dev

聚合物阴影dom元素的基于类的CSS样式

来自分类Dev

聚合物1.0:排序dom-repeat

来自分类Dev

聚合物及其阴影DOM中的CSS封装限制

来自分类Dev

在聚合物中使用本地DOM的数据列表

来自分类Dev

使用javascript / jquery访问shadow DOM属性(聚合物)?

来自分类Dev

包含聚合物元素的DIV的动态高度(阴影DOM)

来自分类Dev

dom-if模板中的聚合物1.0选择元素

来自分类Dev

聚合物dom-repeat属性不起作用

来自分类Dev

聚合物-获得位于阴影dom中的divs位置

来自分类Dev

聚合物数据绑定无dom-bind

来自分类Dev

聚合物-从模板中选择DOM元素