【问题标题】:Extjs5 , resolving dependency in the proxy while loading modelExtjs5 ,在加载模型时解决代理中的依赖关系
【发布时间】:2014-12-27 13:18:00
【问题描述】:

我的模型中有一个代理正在尝试读取配置

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)

完全相同的代码在我的商店代理中工作。

【问题讨论】:

    标签: extjs extjs5


    【解决方案1】:

    这可能是加载顺序问题。因为您在定义模型期间使用了静态变量,所以您的配置类可能尚未定义,即使您已在 app.js 文件中定义它。

    Ext.define 调用完全处理之前,不会定义MyApp.Config 类。但是模型的定义需要它 - 您正在构建一个对象,该对象使用该类作为对 it's Ext.define 的调用的一部分。这意味着在读入文件时需要准备好引用。

    一种解决方案是用函数替换对象 - 例如:

    Ext.define('MyApp.MyModel', function() {
      return {
       ...
       proxy: {
        type:'rest',
        url: MyApp.Config.MY_SERVICE,
       }
      }
    })
    

    这种方法的优点是它会将对象的创建推迟到序列的后面,可能让app.js 代码有机会定义MyApp.Config 对象。

    但是,这仍然取决于正确的顺序。您可以做到这一点的最简单方法是让您的应用程序类需要您的配置类 - 这些需求应该在模型等之前得到处理。您的配置类应该是首先需要的。

    【讨论】:

      猜你喜欢
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      相关资源
      最近更新 更多