フィルター処理された計算プロパティをember-drag-dropsortable-objectsで使用するにはどうすればよいですか?

ソビエト

並べ替え可能なリストを実装するためにember-drag-drop使用しています。これは、リストにテキストフィルターを実装する必要があるまでは問題なく機能しました。

{{#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変更されません。

フィルタリングを許可しながら、元のアイテムのデータセットの並べ替えを許可するにはどうすればよいですか?

アフメットエムレキリンク

Emberの計算されたプロパティも設定できますあなたの場合、次のようにこの作業中のひねりから集合関数を有効にして計算を定義する必要があります

filteredItems: Ember.computed('items', 'term', {
    get(key) {
      let term = this.get('term');
      let items = this.get('items');

      if (term && term.length > 0) {
        let filteredItems = items.filter(item => item.name.indexOf(term) > -1);
        return filteredItems;
      } else {
        return items;
      }
    }, 
    set(key, value) {
      let items = this.get('items');
      let filteredItemsCount = 0;
      let newItems = Ember.makeArray();
      items.forEach(function(item, index){
        if(value){
          if(value && value.indexOf(item) > -1){
             newItems[index] = value[filteredItemsCount];
             filteredItemsCount++;
          }
          else{
            newItems[index] = items[index];
          }
        }
        else{
            newItems[index] = items[index];
        }
      });

      this.set('items', newItems);

      return value;
    }
})

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ