在4.0.2a文档中:http://docs.sencha.com/ext-js/4-0/#/...pp.Application
我明白这一点:
Ext.application({
name: 'MyApp',
launch: function() {
Ext.create('Ext.container.Viewport', {
items: {
html: 'My App'
}
});
}
});
“这可以做几件事。首先它创建一个名为'MyApp'的全局变量 - 所有应用程序的类(例如模型,视图和控制器)都将驻留在这个单独的命名空间下,这大大降低了全局冲突的可能性变量“。
当我运行此代码时,我没有看到名为MyApp的全局变量...其他人是否有此问题?
这是我的整个应用程序(在单个HTML页面中):
<!DOCTYPE html>
<html>
<head>
<title>Testing ExtJS 4</title>
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="extjs/ext-all-debug-w-comments.js"></script>
<script type="text/javascript">
Ext.application({
name: 'MyApp',
launch: function() {
Ext.create('Ext.container.Viewport', {
items: {
html: 'My App'
}
});
}
});
Ext.onReady(function() {
alert(typeof MyApp);
});
</script>
</head>
<body></body>
</html>
答案 0 :(得分:3)
它不起作用,因为api状态(guide/mvc application architecture):
“......所有Ext JS 4应用程序应该只使用一个全局变量,所有应用程序的类都嵌套在中 ......”。
如果您尝试使用此代码:
Ext.application({
name: 'MyApp',
appFolder: '/app',
autoCreateViewport: true,
launch: function() {
console.log(MyApp);
}
});
您将看到全局变量存在。您无需从应用程序本身以外的任何其他位置访问该应用程序
答案 1 :(得分:1)
我得到了同样的错误,这就是我找到的。
在index.html中:
Ext.Loader.setConfig({enabled:true});
Ext.application({
name: 'MyApp',
controllers: ['Test'],
launch: function() {
Ext.create('Ext.container.Viewport', {
items: {
html: 'My App'
}
});
}
});
Ext.onReady(function() {
alert(typeof MyApp);
});
创建一个小型控制器:app / controller / Test.js(/ app与/ extjs具有相同的父文件夹)
Ext.define('MyApp.controller.Test', {
extend: 'Ext.app.Controller',
init: function() {
console.log('The controller was initialised');
}
});
运行时,在Firebug中,您将看到MyApp全局变量。但是,仍然会出现警告声明的“未定义”消息框。
IMHO MyApp是一个“维护对应用程序使用的所有模型,视图和控制器的引用”的对象。也许extjs使用某种类型的“动态加载”;所以它不会创建那个全局变量,直到内部包含某些内容(控制器,视图,模型)(我不确定)。在这种情况下,必须创建变量以包含控制器Test。但是,我无法解释警报的“未定义”消息。也许当时Ext对象已经准备就绪,但是“动态加载”来创建视口,而变量MyApp还没有完成(不确定)。
希望得到这个帮助。