Сгруппированный и отсортированный список в sencha touch 2

#extjs #sencha-touch-2

#extjs #sencha-touch-2

Вопрос:

У меня есть следующий код

 Ext.regModel('Centre', {
   fields: ['name', 'url']
}); 

Ext.application({
    name: 'Sencha',

    launch: function() {

         var panel = new Ext.Panel({
        fullscreen: true,
        dockedItems: [
          {
            xtype: "toolbar",
            dock: "top",
            title: "DEMO APP"

          },
          {
            xtype: "toolbar",
            items: [
              {
                iconMask: true,
                iconCls: "download"
              },
              {
                iconMask: true,
                iconCls: "favorites"
              },
              {
                iconMask: true,
                iconCls: "search"
              },
              {
                iconMask: true,
                iconCls: "user"
              }
            ]  
          },
          {
            xtype: 'list',
            itemTpl: '{name}',
            sorters: 'name',

            store: {
                fields: ['name', 'url'],
                   data: centers
            },
            itemConfig: {
              tpl: '{url}'
            },
            listeners: {
              itemtap:function(data,index){
                var record = data.getStore().getAt(index);
                redirect_url = record.raw.url
                 // the record that has been clicked.
                 window.location = redirect_url
              }
            }
          },


        ]
      });   


   }
});
  

centers содержит список центров. Я хочу отсортировать и сгруппировать список. Попробовал getGroupString(), но не помогло. Возможно, я чего-то не понимаю..

Ответ №1:

Ваш список должен иметь свойство config grouped:true

 (// indexBar:true as well if you want the alphabet on the side)
  

В вашем хранилище должна быть реализована getGroupString функция

 getGroupString: function(record) { return record.get('name') }
  

Ответ №2:

Для всех, кто использует 2.1 , синтаксис теперь заключается в определении группового объекта с помощью функции groupFn в конфигурации:

 grouper: {
    groupFn: function(record) {
        return record.get('name').substr(0, 1);
    },
    sortProperty: 'name'
}