Кнопка refresh не работает в pagingtoolbar без ViewModel
Всем привет!
Обнаружил сегодня такую интересную багу(?) при выводе таблицы. Если я не указываю ViewModel и просто прописываю store вот так для грида и pagingtoolbar:
store: {
type: 'employees'
}
То данные в таблицу отлично загружаются, но кнопка refresh в тулбаре не обновляет ничего. Но если создать ViewModel вот такой:
Ext.define('MyApp.view.employees.EmployeesModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.employees',
requires: [
'Ext.data.Store',
'Ext.data.proxy.Memory',
'Ext.data.field.Integer',
'Ext.data.field.String',
'Ext.data.field.Date',
'Ext.data.field.Boolean',
'Ext.data.reader.Json'
],
stores: {
usersResults: {
type: 'employees'
},
}
});
А потом прописать его во вьюхе:
viewModel: {
type: 'employees'
},
И прописать store через bind в гриде и тулбаре:
bind: '{usersResults}'
То кнопка refresh отлично работает! С чем связано подобное поведение? :-? |
так в документации, например, в версии 5.1.3
для грида http://docs.sencha.com/extjs/5.1.3/a...html#cfg-store параметр store может содержать Store config object, например { type: 'employees' } а смотрим на pagingtoolbar http://docs.sencha.com/extjs/5.1.3/a...html#cfg-store параметр store только либо Ext.data.Store class / subclass либо String - ID of a store так что, похоже, ваше поведение pagingtoolbar согласно документации :-) |
Это потому, что конфиг с типом хранилища приводит к созданию отдельного экземпляра, и получается, что у grid одно хранилище, а у Paging toolbar другое. Как два гуся из песенки. :)
|
Цитата:
Так каким образом прописывать store здесь? Через storeID? ViewModel мне тут в принципе не особо нужна... |
например в initComponent
создай укажи store для Paging toolbar, как здесь делают http://examples.sencha.com/extjs/5.1...k/#paging-grid |
Удаляю строку в гриде через actioncolumn вот так:
{
xtype: 'button',
iconCls: 'x-fa fa-close',
handler: function(grid, rowIndex, colIndex) {
//get store
var store = grid.getStore();
//get current record by row index
var rec = store.getAt(rowIndex);
//delete (autosync do all job)
store.remove(rec);
}
}
Но итоговое количество в pagingtoolbar остается прежним. Какое-то событие надо вызывать его обновления? |
store.sync() store.reload() |
Или в свойствах store укажи
autoSync : true |
Цитата:
достаточно просто обновить информацию на pagingtoolbar pagingToolbar.onLoad(); для надежности иногда можно gridStore.totalCount = gridStore.count(); pagingToolbar.onLoad(); |
Цитата:
Цитата:
Простой onLoad() ничего не делает. Интересно, почему такой простой момент автоматом не выполняется? :blink: |
| Часовой пояс GMT +3, время: 11:51. |