<dom-repeat>中的聚合物子属性

时间:2015-11-22 06:54:52

标签: javascript polymer polymer-1.0

在聚合物文档&#34; dom-repeat&#34;它说:

  

项目子属性更改通知将转发到模板实例,通过正常的结构化数据通知系统进行更新。

我认为这意味着如果我更改数组的一个元素,它将更新任何绑定元素。我没有发现这种情况。考虑到这一点,似乎更新子属性的唯一选择是使用数组方法或自定义函数重建数组,这对于更大的数据来说将越来越困难。或以某种方式将观察者添加到所有子属性,这些子属性感觉不高效。有什么建议吗?

不起作用的示例:http://jsbin.com/wadeju/1/edit?html,output

(function(){
  Polymer({
    is: 'x-element',
    properties:{
      d:{
        type: String,
        value:"Click Me"
      },
      days:{ 
        type: Array,
        value: ["one", "two", "three"]
      }
    },
    c:function(){
        this.days[0] = "1";
        this.days[1] = "2";
        this.days[2] = "3";
        this.d="hello";
     },
  });

有效的示例:http://jsbin.com/luqudo/edit?html,output

Polymer({
        is: 'x-element',
        properties:{
          d:{
            type: String,
            value:"Click Me"
          },
          days:{ 
            type: Array,
            value: ["one", "two", "three"]
          }
        },
        c:function(){
            this.days = ["1", "2", "3"]
            this.d="hello";
         },
      });
    })();

1 个答案:

答案 0 :(得分:0)

绑定数组值的推荐方法:
https://www.polymer-project.org/1.0/docs/devguide/data-binding.html#array-binding

请注意,dom-repeat示例还使用数组中的命名对象进行绑定。

您应该使用Polymer的(数组)变异方法来维持同步:
https://www.polymer-project.org/1.0/docs/devguide/properties.html#array-mutation

使用Polymer的属性变异设置数据的示例:
http://jsbin.com/zuhecovequ/1/edit?html,output

(function(){
  Polymer({
    is: 'x-element',
    properties:{
      d:{
        type: String,
        value:"Click Me"
      },
      days:{ 
        type: Array,
        value: ["one", "two", "three"]
      }
    },
    c:function(){
        this.set("days.0","1");
        this.set("days.1","2");
        this.set("days.2","3");
        this.d="hello";
     },
  });
})();