Extjs5,在加载模型时解析代理中的依赖关系

时间:2014-12-27 13:18:01

标签: extjs extjs5

我的模型中有一个试图读取配置的代理

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)

完全相同的代码可以在我商店的代理服务器中运行。

1 个答案:

答案 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对象。

然而,这仍然取决于获得正确的订单。最简单的方法是让你的应用程序类需要你的配置类 - 这些需要应该在模型之前进行处理等。你的配置类应该是第一件需要的东西。