2017-03-24 6 views
1

私の検索方法は、jsonmodelの最初のノードでのみ機能しています。別のフィルタを作成する必要はありますか?ナビゲーション・リストでのバインド検索

///ビュー

<tnt:NavigationList id="navlist" items="{path:'cars>/Desc'}" > 
     <tnt:NavigationListItem id="navlistitem" text="{cars>TITLE}" expanded="true" items="{path:'cars>ITEMS',templateShareable:true}" 
           key="{cars>number}"> 

       <tnt:NavigationListItem id="navListItemSecond" text="{cars>TITLE}" key="{cars>number}"> 

       </tnt:NavigationListItem> 
     </tnt:NavigationListItem> 
    </tnt:NavigationList> 

//コントローラ(検索方法)

  onLiveSearch:function(evt) { 
     var filterString = evt.getParameter('newValue'); 
     var filters = []; 
      var tree = this.getView().byId('navlist'); 
     var binding = tree.getBinding('items'); 
     if (filterString && filterString.length > 0) { 
      var filter1 = new sap.ui.model.Filter('TITLE', sap.ui.model.FilterOperator.Contains, 
       filterString); 
      filters.push(filter1);    
     } 
     binding.filter(filters);    
    }, 
+0

アイデアはありますか? – xGenius

答えて

0

あなたの質問はFiltering on Nested Aggregation Bindingと少し似ています。基本的に2つのレベルのコレクションがあり、両方のレベル(navリストのアイテムとそれらのアイテムの子アイテム)を1回の検索でフィルタリングできるようにしたいと思います。

何をする必要があり、実際にトップレベルの集計(NavigationListのitems集約)とすべての下位レベルの集計(NavigationListのNavigationListItemsのitems集計の各)の両方をフィルタリングしています。

このコントロールは実際に(表示される項目を取得するために、実行時にクローン化される)結合集約のためのテンプレートであるため、navlistitemの項目の集約意志ない仕事上のフィルタリングを覚えておいてください。すべてのクローン(= NavigationListの項目)を繰り返し処理し、それぞれのフィルタを適用して、必要なものを実現する必要があります。