有聚合物1.2.4如果您想將iron-list
以動態方式進行排序,你還可以利用this.querySelector('iron-list').notifyResize();
優勢來強制在更新觀察者中的sortedItems
數組後刷新。這是一個黑客,但如果你不這樣做,不幸的是聚合物不會刷新你的名單。讓我們id
或name
我們的項目進行排序:
<template>
<paper-icon-button icon="expand-more" on-tap="_sortItems" sort-option="id"></paper-icon-button>
<paper-icon-button icon="expand-more" on-tap="_sortItems" sort-option="name"></paper-icon-button>
<iron-list items="[[sortedItems]]">
<template>
<p>[[item.name]]<p>
</template>
</iron-list>
</template>
...
properties: {
...
sortByTerm: {
type: String,
value: 'id'
},
sortByOrder: {
type: Number,
value: -1 // Descending order
},
},
observers: [
'sortingObserver(items.*, sortByTerm, sortByOrder)'
],
sortingObserver: function(items, sortByTerm, sortByOrder) {
var sortedItems = [],
validSortingOptions = ['id', 'name'];
if (validSortingOptions.indexOf(sortByTerm) != -1) {
sortedItems = items.base.sort(this._computeSort(sortByTerm, sortByOrder));
} else {
sortedItems = items.base;
}
this.set('sortedItems', sortedItems);
this.querySelector('iron-list').notifyResize();
},
_computeSort: function(property, order) {
return function(a, b) {
if (a[property] === b[property]) {
return 0;
}
return (order * (a[property] > b[property] ? 1 : -1));
};
},
_sortItems: function(e) {
var sortByTerm = e.currentTarget.getAttribute('sort-option');
this.set('sortByTerm', sortByTerm);
},
...
'指數as'來,你可以索引變量綁定到更多的東西meaningfull打印索引列在屏幕上。你可能會想使用一個函數來返回排序後的數據。 –