0

私がやりたいのは、データのリストのアイテムを条件付きで表示することです。つまり、アイテムが条件を満たしている場合は表示され、そうでない場合は表示されません(空白のアイテムを表示するという意味ではありません)。表示されるデータは次のとおりです。

 [
      {'label':'one','isvisible':'1','value':'one'},
      {'label':'two','isvisible':'1','value':''},
      {'label':'three','isvisible':'0','value':'three'},
      {'label':'four','isvisible':'0','value':''}
 ]

そして、私のリストは以下のようなものです:

                        xtype : 'list',
                        id :  'myListId',
                        disableSelection : true,
                        itemTpl : [
                                 '<tpl if="isvisible == 1 && value !=\'\'  ">',
                                    '{label}{value}',
                                 '</tpl>'
                        ]

しかし、リストが表示されたとき、アイテムが条件を満たしている場合(プロパティ「表示」が1またはプロパティ「値」が空)、空白行がいくつかあります。

最初に'<tpl for="." '、私はこのリンクをたどりました: リンクを使用しましたが、データのリストにはルートノードがないため、上記のitemtplを使用しました。

データのリストの構造を変更したくないのですが、どうすればよいですか?

更新:私はストアを使用しません。データを取得してから、次のようにデータをリストのデータ構成に割り当てます。

var data=[{text:'1'},{text:'2'},{text:'3'}];//usually the data array comes from the response of an ajax request to the remote server.
var list=Ext.getCmp('myListId');
list.setData(data);
4

2 に答える 2

0

これを試して

          {
                xtype : 'list',
                disableSelection : true,
                itemTpl : [
                     '<tpl if="isvisible == 1 && value !=\'\'  ">',
                     '{label}{value}',
                      '</tpl>'
                ],
               listeners : {
                initialize: function(list, eOpts ) {
                    var visibleFilter = new Ext.util.Filter({
                        property: 'isvisible',
                        value   : 1
                    });

                    var valueFilter = new Ext.util.Filter({
                        filterFn: function(item) {                               
                            return item.data.value.length != 0;
                        }
                    });

                    list.getStore().setFilters([visibleFilter,valueFilter]);
                }
            }
        }   
于 2013-08-07T05:26:39.570 に答える