我已经到了我的extjs Web应用程序准备好部署的阶段,并使用Sencha CMD创建了JSB文件,我用它创建了all-class.js和all-app.js。 但是当我尝试运行部署的版本时,它失败了 - 我明白为什么,但我不知道如何解决它。你看,我的应用程序.js应用程序的文件如下所示;
var SessionData = null;
var Proxy = null;
Ext.Ajax.on('requestexception', function (conn, response) {
if (response.status === 401) {
window.location.href = "../login/index.html";
}
if (response.status === 403) {
var data = Ext.decode(response.responseText);
Ext.MessageBox.alert('Error', data.error);
}
});
....
Ext.Ajax.request({
url :'/LPAA/Servlets/servlet/LPA',
method: 'GET',
params: {
action: App.Actions.UserManagement.VALIDATE,
lpCode: getJsonFromUrl().lpParentCode
},
scope: this,
success: onValidateSession,
failure: function(){
window.location.href = "../login/index.html";
}
});
....
function onValidateSession(response){
SessionData = Ext.decode(response.responseText);
if (SessionData == null || SessionData.userName == null){
window.location.href = "../login/index.html";
return;
}
Proxy = {
type: 'ajax',
url :'/LPAA/Servlets/servlet/LPA',
timeout:120000,
reader: {
root: "array",
type: 'json'
},
writer: {
type: 'json'
}
};
Ext.Loader.setConfig({
enabled: true,
disableCaching: false // this prevents break-points in Chrome's debugger to disappear after reloading the page
});
Ext.application({
requires: [...],
models: [...],
stores: [...],
views: [...],
controllers: [...],
name: 'LPAClient',
launch: function () {
globalApp = this;
Ext.create('Ext.container.Viewport', {
layout: 'fit',
items: [
{
xtype: 'entitlement'
}
]
});
try {
Ext.create('LPAClient.GeneralUtils');
} catch (ex){}
}
});
}
关键是,首先通过服务器验证会话,并且仅当会话有效时,才会构造应用程序。 现在,当我运行该应用程序时,我在浏览器控制台中遇到的错误是
Uncaught TypeError: Cannot call method 'on' of undefined
哪个原点在代码开头的Ext.Ajax.on('requestexception'...
中。 我可以在网络的选项卡中看到 app-all.js 在 Ajax.js 文件之前加载。如何强制我的应用程序在加载 all-app.js 文件之前加载 Ajax.js 文件?或者换句话说 - 我怎样才能拥有应用程序.js在使用之前需要"Ext.Ajax"?
干杯eRez
代码的第一个问题是你不应该在应用程序之外运行 ExtJS 代码。将会话验证码放入应用程序的launch
方法中。这与 ExtJs 中的新 MVC 范式更一致。
关于煎茶cmd:Sencha cmd 版本 4 知道您的应用程序使用的所有 JavaScript 文件,您不再需要维护 jsb 文件。在此处阅读Sencha Cmd的介绍以及完整的Sencha Command 4.0文档。
编译应用程序jsb3
方法与 Sencha Command 3.0 一起使用,并且出于向后兼容性原因在 4.0 版本中工作,但不鼓励这样做。你提到的参考已经两年多了,现在已经过时了,因为它是在Sencha cmd 4.0发布之前编写的。
我无法解释如何将项目迁移到新的思维方式 ExtJs。涉及的步骤主要如下:
- 确保每个 JS 文件仅包含一个类定义,并且它位于与其包含的类名对应的路径中。
-
根据建议查看文件夹结构:
.app/ 型/ 商店/ 控制器/ 视图/ 应用.js索引.html应用.js