2012-04-26 3 views
0

Допустим, мы следуем исходной статьи http://www.sencha.com/learn/the-mvc-application-architecture и такой магазин:Бесконечная прокрутка сетки и MVC

Ext.define('AM.store.Users', { 
    extend: 'Ext.data.Store', 
    model: 'AM.model.User', 
    autoLoad: true, 

    proxy: { 
     type: 'ajax', 
     url: 'data/users.json', 
     reader: { 
      type: 'json', 
      root: 'users', 
      successProperty: 'success' 
     } 
    } 
}); 

И мы решили реализовать бесконечный скроллинг сетки. Для этого нам нужно удалить autoLoad: true и вызвать store.guaranteeRange(...) вручную.

Итак, что является лучшим местом для этого?

ответ

1
Ext.define('AM.store.Users', { 
    extend: 'Ext.data.Store', 
    model: 'AM.model.User', 
    autoLoad: true, 
    remoteSort: true, 
    buffered: true, 
    pageSize: 100, 
    proxy: { 
     type: 'ajax', 
     url: '/postdata/list', 
     limitParam: 'size', 
     startParam: undefined, 
     reader: { 
      type: 'json', 
      root: 'data', 
      successProperty: 'success' 
     } 
    } 
}); 

Демо здесь http://ext4all.com/post/extjs-4-1-grid-infinite-scroll-in-mvc

1

Где-то, где вы оказываете свою сетку. Вы можете перезаписать метод afterRender(), или если это модальная сетка/диалог - загрузите хранилище перед его представлением.

Пара примечание стороны (я пытаюсь сделать точку, что autoLoad обычно false для всех магазинов:

  • , если вы когда-либо будет использовать любую проверку подлинности в приложении - вы придется отключить autoLoad на все магазины.
  • Если у вас есть более чем несколько магазинов (скажем, 5-10 +?), настоятельно рекомендуется также отключить это. Вы не хотите, чтобы все они загружались одновременно с запуском приложения.
  • очень часто вам нужно иметь гарантию, что что-то произойдет после загрузки магазина, а затем снова отключите autoLoad, подпишитесь на событие загрузки и load() магазин вручную.
Смежные вопросы