3
私はember-drag-dropを使ってソート可能なリストを実装しています。これは、リストにテキストフィルタを実装する必要があるまでうまくいきました。ember-drag-drop sortable-objectsでフィルタリングされた計算済みプロパティを使用するにはどうすればよいですか?
{{#sortable-objects sortableObjectList=filteredItems enableSort=true}}
{{#each filteredItems as |item index|}}
{{#draggable-object content=item isSortable=true isDraggable=true}}
{{item.name}}
{{/draggable-object}}
{{/each}}
{{/sortable-objects}}
filteredItemsは、ユーザーのテキスト入力に基づいて元のリストをフィルタリングする計算されたプロパティです。
filteredItems: computed('items', 'term', function() {
let term = this.get('term');
let items = this.get('items');
if (term.length > 0) {
return items.filter(item => item.conditions.some(cond => cond.field.toLowerCase().indexOf(term) > -1 || (cond.term && cond.term.toLowerCase().indexOf(term) > -1)));
} else {
return items;
}
}),
問題は、計算された(通常は)書き戻せないということです。実際のドラッグ・アンド・ドロップが機能します(アイテムはブラウザで異なる順序で表示されます)。ただし、items
のデータ元の順序は変更されません。
フィルタリングを許可したまま元のアイテムデータセットを並べ替えることはできますか?
、計算されたプロパティの名前がfilteredItems'の代わりに、 'すべきではありません'filteredRules' –
@AhmetEmreKılınçはい、私は自分のコードを匿名化していたときにタイプミスです。 – Soviut
あなたは私の答えをチェックしましたか? –