我正在使用 sencha 架构师编写一个 sencha 触摸应用程序。因为我的应用程序做了很多 ajax 请求,所以大部分都需要在请求标头中发送“令牌”以进行身份验证。所以我想创建基于 Ext.Ajax 的子类,它在请求头中总是有“令牌”。然后我可以使用这个子类而不用关心标题。
MyApp.override.Ajax.request({ ... })
我尝试在 app/override/Ajax.js 中定义它
Ext.define('Myapp.override.Ajax', {
override: 'Ext.Ajax',
headers: {
'token': 'test'
}
});
我还在应用程序中将此设置为“要求”。但是尝试调用时会出错
Myapp.override.Ajax.request({ ... })
似乎 Myapp 找不到 .override 包(MyApp.override 未定义)
如何让 MyApp 知道覆盖包或执行此操作的正确/最佳方法是什么。
一个简单的例子非常感谢。非常感谢。
更新信息:
覆盖文件位置:app\override\Ajax.js
.html 文件:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
var Ext = Ext || {};
Ext.theme = {
name: "Default"
};
</script>
<script src="sencha-touch-all-debug.js"></script>
<link rel="stylesheet" href="resources/css/sencha-touch.css">
<script src="app/override/Ajax.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body></body>
</html>
app.js 文件
Ext.Loader.setConfig({
});
Ext.application({
requires: [
'MyApp.override.Ajax'
],
views: [
'ContactDetailView'
],
name: 'MyApp'
...
应用程序可以正常启动,但调用 MyApp.override.Ajax.request 时:无法读取 undefined 的属性“Ajax”,意味着 MyApp.override 未定义
更新
这里有一些新闻,它更好但还没有工作。
Ext.define('MyApp.Ajax', {
extend: 'Ext.data.Connection',
singleton: true,
request: function( options ) {
this.constructor(options, options.url);
console.log(options);
options.header = {'Token':'mytoken'};
this.callParent( options );
}
});
尝试 MyApp.Ajax.request() 时出错。我确定 options.url 通过检查日志存在于选项中
[ERROR][Ext.data.Connection#request] No URL specified
我从构造函数添加扩展
constructor : function (config, url)
{
config = config || {};
//config.url = 'google.com';
this.initConfig(config);
this.callParent(config);
},
当我从 config.url = 'google.com' 中删除评论时,错误就消失了;但它的 config.url 有 ajax 请求 url 但本地文件 url ??? 我从 chrome 控制台和网络中看到?
GET file:///C:/MyApp/assets/www/google.com?_dc=1370855149720
请帮忙。谢谢。