0
の配列の変化を検出していません変更を検出しません。データバインディング機能は、私が持っているオブジェクト
hidden
はどのように変更を検出しますか?私はこれをsimilar issueと読んでいますが、これにはどのようにlinkPath
を使うのかはっきりしていません。
の配列の変化を検出していません変更を検出しません。データバインディング機能は、私が持っているオブジェクト
hidden
はどのように変更を検出しますか?私はこれをsimilar issueと読んでいますが、これにはどのようにlinkPath
を使うのかはっきりしていません。
データバインディングを使用してPolymerのネイティブ配列を操作することはできません。 Polymerには、配列要素をメモリにマップする独自の方法があり、配列要素の変更を検出することはできません。
代わりに、アレイを突然変異させるためにPolymer APIを使用しなければなりませんでした。this.get
およびthis.set
。これは、私がuploadState.*
で行ったように、配列要素をパスとして扱う必要があるので、いくらか使い慣れています。
array.base()
(少なくとも私が見つけたのは... Polymer.base()
)のAPIドキュメントがないので、ドキュメントは少し荒いです。
ソリューション:
<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);
}