我的模型中有一个试图读取配置的代理
proxy:
{
type:'rest',
url:MyApp.Config.MY_SERVICE, <-- Problem
reader: {
type: 'json',
rootProperty:'contact'
},
writer: {
type: 'json',
writeAllFields: true
},
}
以下配置类最初在app.js
中加载Ext.define('MyApp.Config',
{
alias:'Config',
statics:
{
MY_SERVICE: 'http://localhost:8080/myapp/myservice',
}
}
我得到的错误是
Uncaught TypeError: Cannot read property 'MY_SERVICE' of undefined (anonymous function)
完全相同的代码可以在我商店的代理服务器中运行。
答案 0 :(得分:0)
这可能是一个加载顺序问题。由于您在定义模型期间使用静态变量,因此即使您已在app.js
文件中对其进行了定义,您的配置类也可能尚未定义。<\ n / p>
在完全处理MyApp.Config
来电之前,不会定义Ext.define
课程。但是模型的定义需要它 - 您正在构建一个对象,该对象使用该类作为对它的 Ext.define
的调用的一部分。这意味着在读入文件时需要准备好引用。
一种解决方案是用函数替换对象 - 例如:
Ext.define('MyApp.MyModel', function() {
return {
...
proxy: {
type:'rest',
url: MyApp.Config.MY_SERVICE,
}
}
})
这种方法的优点在于它将推迟创建对象直到序列中的后期,可能使app.js
代码有机会定义MyApp.Config
对象。
然而,这仍然取决于获得正确的订单。最简单的方法是让你的应用程序类需要你的配置类 - 这些需要应该在模型之前进行处理等。你的配置类应该是第一件需要的东西。