数组子属性更改时计算绑定触发器?

时间:2018-03-18 23:33:24

标签: polymer polymer-1.0

聚合物1. *

我正在尝试使用数组优化计算绑定的行为。我有<div hidden$="[[getState(uploadState.*)]]">FOO</div>但它经常被解雇。

我将其改进为uploadState.value

  <template is="dom-repeat"
    initial-count="1"
    index-as="index"
    items="{{uploadState}}">

    <div hidden$="[[getState(uploadState.value)]]">FOO</div>

使用:

    uploadState: {
      type: Array,
      value: function() {
        var arr = Array.apply(null, Array(5));
        var newArray = arr.map(()=> {
          return {
            value: false,
            main: false,
            edited: false,
            loading: false
          };
        });
        return newArray;
      },
      notify: true
    },

  attached: function() {
    setTimeout(()=>  this.set(`uploadState.0.value`, true), 1000)
  }

但它根本没有发射。当value属性发生变化时,如何在计算出的绑定中触发它?

另外,如何在更改时使用this.get()获取值?我在计算的绑定var uploaded = this.get(['uploadState.value', 0])中尝试了getState,但它只是显示未定义的(当它用于触发。*时)

1 个答案:

答案 0 :(得分:2)

您使用绑定uploadState.value的问题是它不存在。您正在制作一个uploadState数组,其成员的属性value看起来更像uploadState.*.value,但您并不想真正改变所有值的变化,只是有问题的一个,这样你就可以利用item的{​​{1}}绑定,这样你的代码就会这样:

dom-repeat

我可能会建议您更改命名约定并使用<template is="dom-repeat" initial-count="1" index-as="index" items="{{uploadState}}"> <div hidden$="[[item.value]]">FOO</div> </template> 作为数组和所有内容,以便您可以执行以下操作:

uploadStates