2017-05-12 9 views
0

私はアルファベット順にオブジェクトの配列をソートしようとしています。しかし、何とかvaadin-combo-boxポリマー要素はVaadinコンボボックスのソート

enter image description here

enter image description here

私はから私のデータを取得しています(配列のより多くの項目があるにもかかわらず)、ソート後の配列の最初の項目を示していFirebase(settingsDataと呼ばれる)ので、私は、データが追加されているかどうか、削除するスプライスオブザーバを使用する必要があります。

オブザーバー

observers: [ 
    'sortData(settingsData.splices)' 
], 



sortData: function(newD, oldD) { 
    if(newD) { 
     var tmp = this.settingsData.sort(function(a,b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? 1 : ((b.name.toUpperCase() > a.name.toUpperCase()) ? -1 : 0);}); 
     //tmp is an array in the correct order 
     this.set("filteredItems", tmp); 
    } 
} 

HTML

<vaadin-combo-box id="picker" label="[[label]]" items="[[filteredItems]]" item-label-path="name" item-value-path="name" value="{{valueText}}" on-value-changed="valueChanged"></vaadin-combo-box> 

答えて

0

は、どういうわけか、配列の変異のためのオブザーバーは、最初の時間の後に解雇されていません。これは、vaadin-combo-boxの表示が正しく表示されないことを意味しますが、これは少しばかり思われますか?

新しいデータを設定しようとするたびにアレイをクリアするのは難しいことでした。

this.set("filteredItems", []); 
this.set("filteredItems", tmp); 
+1

これは実際にはポリマーのベストプラクティスです。 DOMを強制的に更新します。 :) –

0

どちらかthis.settingsData.sort実際には1つのアイテムを返すか、Firebaseの反応性のデータは、それを破ります。インライン配列データで再現できません。

関連する問題