Javascript ext.js自维护存储
获取客户端存储的最快方法是什么,它使用某种回调/侦听器返回数据(而不是从服务器返回数据)。解释:Javascript ext.js自维护存储,javascript,extjs,model-view-controller,Javascript,Extjs,Model View Controller,获取客户端存储的最快方法是什么,它使用某种回调/侦听器返回数据(而不是从服务器返回数据)。解释: Ext.define('aaa.store.ContactList', { extend: 'Ext.data.Store', requires: 'aaa.model.ContactList', model: 'aaa.model.ContactList', autoLoad: true, fields:['firstLetter', 'userId', '
Ext.define('aaa.store.ContactList', {
extend: 'Ext.data.Store',
requires: 'aaa.model.ContactList',
model: 'aaa.model.ContactList',
autoLoad: true,
fields:['firstLetter', 'userId', 'userName', 'h', 'w', 'm', 'v', 'custom'],
groupField: 'firstLetter',
sorters: ['firstLetter', 'userId'],
// Overriding the model's default proxy
proxy: {
type: 'direct',
directFn: 'getPhoneBookEntries', <<--- don't want this to be a server method, but a client side js method...
reader: {
type: 'json',
rootProperty: ''
}
}
});
商店:
Ext.define('WebPhone.model.ContactList', {
extend: 'Ext.data.Model',
fields: [
{ name: 'firstLetter', type: 'string' },
{ name: 'userId', type: 'string' },
{ name: 'userName', type: 'string' },
{ name: 'h', type: 'string' },
{ name: 'w', type: 'string' },
{ name: 'm', type: 'string' },
{ name: 'v', type: 'string' },
{ name: 'custom', type: 'string' }
]
});
Ext.define('WebPhone.store.ContactList', {
extend: 'Ext.data.Store',
requires: 'WebPhone.model.ContactList',
model: 'WebPhone.model.ContactList',
autoLoad: true,
fields:['firstLetter', 'userId', 'userName', 'h', 'w', 'm', 'v', 'custom'],
groupField: 'firstLetter',
sorters: ['firstLetter', 'userId'],
// Overriding the model's default proxy
// proxy: {
// type: 'memory',
// reader: {
// type: 'json',
// rootProperty: 'root'
// }
// }
});
var store = Ext.getStore( "ContactList" );
//var array_values = new Array();
//for( var key in phoneBook )
//array_values.push( phoneBook[key] );
//store.loadData( array_values );
store.loadData( [{firstLetter:'a', userId:'ali', userName:'ali', h:'04040', w:'04040', m:'04040', v:'04040', custom:'04040'}] );
gride定义对于本文来说太长,但它可以处理预加载的数据
数据加载代码:
Ext.define('WebPhone.model.ContactList', {
extend: 'Ext.data.Model',
fields: [
{ name: 'firstLetter', type: 'string' },
{ name: 'userId', type: 'string' },
{ name: 'userName', type: 'string' },
{ name: 'h', type: 'string' },
{ name: 'w', type: 'string' },
{ name: 'm', type: 'string' },
{ name: 'v', type: 'string' },
{ name: 'custom', type: 'string' }
]
});
Ext.define('WebPhone.store.ContactList', {
extend: 'Ext.data.Store',
requires: 'WebPhone.model.ContactList',
model: 'WebPhone.model.ContactList',
autoLoad: true,
fields:['firstLetter', 'userId', 'userName', 'h', 'w', 'm', 'v', 'custom'],
groupField: 'firstLetter',
sorters: ['firstLetter', 'userId'],
// Overriding the model's default proxy
// proxy: {
// type: 'memory',
// reader: {
// type: 'json',
// rootProperty: 'root'
// }
// }
});
var store = Ext.getStore( "ContactList" );
//var array_values = new Array();
//for( var key in phoneBook )
//array_values.push( phoneBook[key] );
//store.loadData( array_values );
store.loadData( [{firstLetter:'a', userId:'ali', userName:'ali', h:'04040', w:'04040', m:'04040', v:'04040', custom:'04040'}] );
我尝试了loadRawData和loadData,但都没有成功。。。
尝试使用代理(ajax/json/memory/array…您可以随意命名),但不使用
没有成功。我在这里缺少什么?最简单的方法是在没有代理的情况下配置存储,一旦您准备好了数据,请拨打:
我终于解决了这个问题
var contactListView = Ext.ComponentQuery.query('contact-list-view')[0];
var store = contactListView.getStore();
var array_values = new Array();
for( var key in phoneBook )
array_values.push( phoneBook[key] );
store.loadRawData( array_values );
必须手动完成吗?或者我应该在网格的onRender listener中加载数据吗?store.loadData是从javascript加载数据的正确解决方案。使用grid.getView().refresh();要刷新网格,请尝试加载数据()和getview()。刷新()。。。然而,这一观点似乎并没有自我更新。它还是空的。我应该在开始时用一些数据填充商店/模型吗?您不需要手动刷新视图,
loadData
将完成此操作。您的代码中可能存在其他错误。做一把小提琴:可能是一只虫子。。。但是如何找到它呢??