ExtJS: вернуть общее количество строк / записей в хранилище json - PullRequest
5 голосов
/ 29 июля 2011

У меня есть магазин json, который возвращает значения в формате json. Теперь мне нужно получить количество строк / записей в строке json, но когда я использую функцию store.getCount(), она возвращает 0, но поле со списком заполняется строками, а когда я использую store.length, я получаю неопределенный, вероятно, потому что его нет массив больше, его возвращение из хранилища, которое вызывает PHP-скрипт. В любом случае, как лучше всего подойти к этой проблеме?

Ответы [ 4 ]

4 голосов
/ 31 июля 2011

Попробуйте это:

var myStore = Ext.extend(Ext.data.JsonStore, {
  ... config...,
  count : 0,
  listeners : {
    load : function(){
      this.count = this.getCount();
  }
}

Ext.reg('myStore', myStore);

и затем используйте внутренние панели:

items : [{
 xtype : 'myStore',
 id : 'myStoreId'
}]

Всякий раз, когда вам нужно получить счет, вы можете просто сделать это:

Ext.getCmp('myStoreId').count
3 голосов
/ 16 октября 2014

Если вы используете ajax-прокси для магазина, что-то вроде

proxy : {
   type : 'ajax',
   url : 'YOUR URL',
   reader : {
       type : 'json',
       root : 'NAME OF YOUR ROOT ELEMENT',
       totalProperty : 'NAME OF YOUR TOTAL PROPERTY' // requiered for paging
   }
}

, а затем загружаете свой магазин как store.load ();Ajax будет отправлен асинхронный запрос, поэтому вы должны проверить количество в обратном вызове, как это

store.load({
  callback : function(records, operation, success) {
       console.log(this.getCount());         // count considering paging
       console.log(this.getTotalCount());    // total size
         // or even 
       console.log(records.length);          // number of returned records = getCount()
  }
});
3 голосов
/ 28 ноября 2011

Начиная с документов если ваш источник данных предоставлен, вы можете позвонить getTotalCount, чтобы получить размер набора данных.

3 голосов
/ 31 июля 2011

Ваш ответ Json от сервера, может быть что-то вроде этого ...

{
    "total": 9999,
    "success": true,
    "users": [
        {
            "id": 1,
            "name": "Foo",
            "email": "foo@bar.com"
        }
    ]
}

Тогда вы можете использовать reader: { type : 'json', root : 'users', totalProperty : 'total', successProperty: 'success' } в вашем магазине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...