2017-02-25 3 views

答えて

0

データバインディングを使用してPolymerのネイティブ配列を操作することはできません。 Polymerには、配列要素をメモリにマップする独自の方法があり、配列要素の変更を検出することはできません。

代わりに、アレイを突然変異させるためにPolymer APIを使用しなければなりませんでした。this.getおよびthis.set。これは、私がuploadState.*で行ったように、配列要素をパスとして扱う必要があるので、いくらか使い慣れています。

array.base()(少なくとも私が見つけたのは... Polymer.base())のAPIドキュメントがないので、ドキュメントは少し荒いです。

ソリューション:

See Bind to an array item

<div hidden$="{{getState(uploadState.*, index, 'value')}}"> 

... 

    uploadState: { 
     type: Array, 
     value: function() { 
     var arr = Array.apply(null, Array(1)); 
     var newArray = arr.map(()=> { 
      return { value: false }; 
     }); 
     return newArray; 
     }, 
     notify: true 
    } 
    }, 
    getState: function(change, index, path) { 
    var uploaded = this.get(path, change.base[index]); 
    return uploaded; 
    }, 
    changeState: function() { 
    this.set('uploadState.0.value', true); 
    } 
関連する問題