您好我正在使用ExtHs 4。
我有一个需要从商店初始化的全局变量。
var cp=0;
Ext.onReady(function(){
Ext.define('Init', {
singleton: true,
cp: 0
});
Ext.define('loggedUserList', {
extend: 'Ext.data.Model',
fields: ['id','name']
});
loggedUser = Ext.create('Ext.data.Store', {
model: 'loggedUserList',
autoLoad: true,
proxy: {
type: 'ajax',
url : url+'/lochweb/loch/users/getLoggedUser',
reader: {
type: 'json',
root: 'provider'
}
},
listeners: {
load:function(loggedUser){
Init.cp = loggedUser.getAt(0).data.id;
}
}
});
});
我在另一个网址中使用cp的值如下,
Ext.define('vocbList', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id', mapping: 'id' },
{ name: 'code', mapping: 'code' },
{ name: 'loinc', mapping: 'loinc.loincNumber' }
]
});
var vocabulary = Ext.create('Ext.data.Store', {
model: 'vocbList',
autoLoad: true,
proxy: {
type: 'ajax',
url : url+'/lochweb/loch/vocabulary/getVocabularyByProvider?providerId='+Init.cp,
reader: {
type: 'json',
root: 'Vocabulary'
}
}
});
但它的值仍为0.如何分配其值存储形式,以便可以将其重用于其他用途。
由于
答案 0 :(得分:3)
您需要的是回调。
正在以异步方式进行存储调用,以便在商店从数据库获取数据时浏览器不会冻结。
me.vocabulary.load({
scope: this,
callback: function (records, operation, success) {
//here the store has been loaded so records are not empty
}
});
答案 1 :(得分:1)
在Ext.onReady
中,定义一个像这样的全局类:
Ext.define('Init', {
singleton: true,
cp: 0
});
然后您可以在任何地方获取或设置 cp :
Init.cp = 'some';
var myCp = Init.cp;