ExtJS 3中Store组件默认是异步加载的,文档中建议使用事件来解决同步加载的问题。
借助jQuery我们可以实现同步加载Store。
进一步,把这句jQuery.ajax调用扩展到Store的方法中那更愉快了,比如直接调用SyncStore.SyncLoad(); 本文就不继续了
var
recUser
=
Ext.data.Record.create([
{name : ' id ' ,mapping : ' id ' ,type : ' int ' },
{name : ' name ' ,mapping : ' name ' ,type : ' string ' },
{name : ' passwd ' ,mapping : ' passwd ' ,type : ' string ' }
]);
var dsUser = new Ext.data.Store({
url: contextPath + ' /listUserByIds.action ' ,
baseParams: {start: 0 , limit: 256 },
reader: new Ext.data.JsonReader({
totalProperty: ' totalProperty ' ,
root: ' root '
}, recUser)
});
jQuery.ajax({ ' url ' : dsUser.url, ' async ' : false , ' dataType ' : ' json ' , ' data ' : dsUser.baseParams,
' success ' : function (data){
if ( typeof data.totalProperty == ' undefined ' ||
data.totalProperty == 0 ||
typeof data.root == ' undefined '
) {
return ;
}
for ( var i = 0 , len = data.root.length; i < len; i ++ ) {
dsUser.add( new recUser(data.root[i]));
}
}
});
{name : ' id ' ,mapping : ' id ' ,type : ' int ' },
{name : ' name ' ,mapping : ' name ' ,type : ' string ' },
{name : ' passwd ' ,mapping : ' passwd ' ,type : ' string ' }
]);
var dsUser = new Ext.data.Store({
url: contextPath + ' /listUserByIds.action ' ,
baseParams: {start: 0 , limit: 256 },
reader: new Ext.data.JsonReader({
totalProperty: ' totalProperty ' ,
root: ' root '
}, recUser)
});
jQuery.ajax({ ' url ' : dsUser.url, ' async ' : false , ' dataType ' : ' json ' , ' data ' : dsUser.baseParams,
' success ' : function (data){
if ( typeof data.totalProperty == ' undefined ' ||
data.totalProperty == 0 ||
typeof data.root == ' undefined '
) {
return ;
}
for ( var i = 0 , len = data.root.length; i < len; i ++ ) {
dsUser.add( new recUser(data.root[i]));
}
}
});