聚合物dom-repeat不呈现功能作为项目的更改

在Polymer中,我正在使用一个函数来计算的项目dom-repeat

<template is="dom-repeat" items="[[first4People(people, people.*)]]">
  <div>
    First: <span>[[item.first]]</span>
    Last: <span>[[item.last]]</span>
  </div>
</template>

但是,无论我尝试什么,当我更改peoplepeople.0.first的子属性时,都无法获得渲染更新对数组本身所做的更改(例如this.push('people', ...)起作用可能是我被脏支票打了,在这种情况下,我不知道该如何覆盖它。

完整示例:

  <body fullbleed unresolved>

    <widget-example></widget-example>

    <dom-module id="widget-example">
        <template>
          <div style="color: red;">Why doesn't rename first person cause a visible change?</div>
          <div>First 4 people:
            <template is="dom-repeat" items="[[first4People(people, people.*)]]">
              <div>
              First: <span>[[item.first]]</span>
              Last: <span>[[item.last]]</span>
              </div>
            </template>
          </div>

          <div>
            <!-- Why doesn't this work? -->
            <button on-tap="renameFirstPerson">Rename first person</button>
            <button on-tap="sendFrontToBack">Send front to back</button>
          </div>
        </template>
        <script>
        Polymer({
            is: "widget-example",
            properties: {
                people: {
                    type: Array,
                    value: () => [
                      {'first': 'Joe', 'last': 'Blogs'}, 
                      {'first': 'Jon', 'last': 'Bigs'}, 
                      {'first': 'John', 'last': 'Doe'}, 
                      {'first': 'Josh', 'last': 'Blo'},
                    ],
                },
            },

            observers: [
              'o(people.*)',
            ],

            o: function(change) {
              console.log('o', change)
            },

            first4People: function() {
              console.log('first4People called');
              return this.people.slice(0, 4);
            },

            renameFirstPerson: function() {
              console.log('before sendFrontToBack', this.people)
              this.set(['people.0.first'], this.people[0].first+'Foo');

            // None of this causes the rename to show up.
              var person = this.people[0];
              this.people[0] = {};
              this.people[0] = person;
              this.notifyPath('people.0');

              this.set('person', {});
              this.set('person', person);

              var people = this.get('people');
              this.set('people', []);
              this.set('people', people);
            },

            sendFrontToBack: function() {
              console.log('before sendFrontToBack', this.people)
              var last = this.shift('people', this.people);
              this.push('people', last);
              console.log('after sendFrontToBack', this.people)
            },
        });
      </script>
    </dom-module>
  </body>
</html>

柱塞:http://plnkr.co/edit/Yv27I053bk4e3cFbFuhK?p = preview

阿达利斯克

Polymer 1.x这种奇怪的工作方式,在2.0中应该能更好地工作,但是现在您必须先清空然后重写整个数据数组以重新评估更改。出于某种原因,如果您执行此操作,仍然没有任何反应,但是如果您在新框架中提供新值,则它将开始工作:

// Save the data locally
let peoples = this.people;

// Do the change in the local array
peoples[0].first += 'Foo';

// Empty the data so it can reevaluate 
this.people = []; // this.set('people', []);

// Insert the new data in a new frame     
requestAnimationFrame(time => {
    this.people = peoples; // this.set('people', peoples);
});

http://plnkr.co/edit/cLirT95ot1d5BMFWItwD?p=preview

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

聚合物1.0:排序dom-repeat

来自分类Dev

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

来自分类Dev

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

来自分类Dev

dom-repeat内的聚合物动态禁用

来自分类Dev

聚合物-集数组不更新DOM

来自分类Dev

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

来自分类Dev

聚合物 2:组件不呈现

来自分类Dev

聚合物属性更改功能

来自分类Dev

聚合物属性更改功能

来自分类Dev

如何在聚合物自定义元素中呈现阴影DOM

来自分类Dev

聚合物1.0-在模板内部显示值的问题为“ dom-repeat”

来自分类Dev

聚合物1.0:通过dom-repeat中的id访问元素

来自分类Dev

聚合物1.0,如何实现无限嵌套dom-repeat

来自分类Dev

聚合物1.x dom-repeat无法正常工作

来自分类Dev

聚合物1.0-在模板内部显示值的问题为“ dom-repeat”

来自分类Dev

聚合物dom-repeat和铁ajax调用的显示结果

来自分类Dev

聚合物铁选择器将dom.repeat中的this.push()弄乱了

来自分类Dev

聚合物:使用dom-repeat中的按钮上的点击处理程序破坏数据绑定

来自分类Dev

聚合物进料值进入第二个 dom-repeat

来自分类Dev

聚合物铁媒体查询不适用于 dom-repeat 元素

来自分类Dev

使用切换和项目属性的聚合物“ dom-if”

来自分类Dev

带参数的聚合物功能调用

来自分类Dev

聚合物项目加载缓慢

来自分类Dev

聚合物:如何重复下拉项目

来自分类Dev

聚合物:更改延迟值执行

来自分类Dev

聚合物1.0:在纸张菜单元素内部使用模板dom-repeat来显示选择时的铁页

来自分类Dev

聚合物::使用Iron-ajax导入数据时,无法定位dom-repeat中的元素

来自分类Dev

dom-repeat 中的聚合物纸对话框在删除其他数组项时打开

来自分类Dev

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

Related 相关文章

  1. 1

    聚合物1.0:排序dom-repeat

  2. 2

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

  3. 3

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

  4. 4

    dom-repeat内的聚合物动态禁用

  5. 5

    聚合物-集数组不更新DOM

  6. 6

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

  7. 7

    聚合物 2:组件不呈现

  8. 8

    聚合物属性更改功能

  9. 9

    聚合物属性更改功能

  10. 10

    如何在聚合物自定义元素中呈现阴影DOM

  11. 11

    聚合物1.0-在模板内部显示值的问题为“ dom-repeat”

  12. 12

    聚合物1.0:通过dom-repeat中的id访问元素

  13. 13

    聚合物1.0,如何实现无限嵌套dom-repeat

  14. 14

    聚合物1.x dom-repeat无法正常工作

  15. 15

    聚合物1.0-在模板内部显示值的问题为“ dom-repeat”

  16. 16

    聚合物dom-repeat和铁ajax调用的显示结果

  17. 17

    聚合物铁选择器将dom.repeat中的this.push()弄乱了

  18. 18

    聚合物:使用dom-repeat中的按钮上的点击处理程序破坏数据绑定

  19. 19

    聚合物进料值进入第二个 dom-repeat

  20. 20

    聚合物铁媒体查询不适用于 dom-repeat 元素

  21. 21

    使用切换和项目属性的聚合物“ dom-if”

  22. 22

    带参数的聚合物功能调用

  23. 23

    聚合物项目加载缓慢

  24. 24

    聚合物:如何重复下拉项目

  25. 25

    聚合物:更改延迟值执行

  26. 26

    聚合物1.0:在纸张菜单元素内部使用模板dom-repeat来显示选择时的铁页

  27. 27

    聚合物::使用Iron-ajax导入数据时,无法定位dom-repeat中的元素

  28. 28

    dom-repeat 中的聚合物纸对话框在删除其他数组项时打开

  29. 29

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

热门标签

归档