我注意到Ext.class的使用和要求并没有使用Sencha cmd工具生成的缩小的js。我定义了两个类,假设类A和B,B类要求创建一个A的Instace,其中有一个ajax调用,它从服务器端代码中提取一些值,这非常有效当我使用具有类,存储,模型等的常规js结构时。但是在使用Secha cmd构建缩小的js之后情况并非如此,是否可以在应用程序开始加载视图或任何其他建议之前同步地实例化这些单重结构你想建议解决这个问题吗? 请注意我使用的是ExtJs 4.2
Ext.define('A', {
alternateClassName:'AClass',
singleton:true,
constructor: function(config) {
this.initConfig(config);
Ext.Ajax.request({
url : 'XXX.html',
method : 'POST',
headers: { 'Content-Type' : 'application/json',
},
success : function(response, opts) {
appProps = JSON.parse(response.responseText).items;
},
failure : function(response, opts) {
}
});
return this;
},
config: {
appProperties: '%XXX_PROPPERTIES%',
accSysMnemonic:'',
assetTypeForExAccCat:'',
appProps : ''
},
getValue : function(key){
props = appProps;
var value = props[key];
return value;
}});
Ext.define('B', {
requires:['A'],
alternateClassName : 'BClass',
singleton : true,
config : {
},
constructor : function(config) {
this.initConfig(config);
return this;
},
hasvalue : function(val) {
if(A.getValue('XXX') === 'false' || A.getValue('XXX') === undefined){
console.log('XXX is false');
return true;
}else{
return false;
}
}});
答案 0 :(得分:0)
如果我理解正确,你不希望“B”在“A”完成它Ext.Ajax.request
之前初始化。那是对的吗?
您可以通过多种方式实现这一点,但最简单的方法可能是强制Ajax请求同步(阻止脚本执行直到完成)。
根据Ext JS docs,您可以在请求选项上设置async : false
以强制执行此操作。
或者,您可以设置一些事件/状态逻辑以避免脚本执行块。