在ExtJS中将静态属性值传递给类定义时,无法读取undefined的属性

时间:2014-02-25 18:57:10

标签: javascript extjs

我想知道是否有人可以帮助解决我在ExtJS 4中遇到的一个特殊问题。我有一个已定义的商店,其中包含我在'read'和'create'中指定的一些值代理中的api对象的属性来自一个类,其中这些值在类的静态部分中定义。但是,当我运行应用程序时,我不断收到错误:

**Uncaught TypeError: Cannot read property 'Url' of undefined**.

这是商店

Ext.define('MyApp.store.address.AddressStore',
       {
           extend: 'Ext.data.Store',
           model: 'MyApp.model.address.AddressModel',
           requires: ['MyApp.props.Url'],
           proxy: {
               type: 'ajax',
               api: {
                   create: MyApp.props.Url.Address.ADD_ADDRESS_URL, //This is defined in the static class below
                   read: MyApp.props.Url.Address.GET_ALL_ADDRESSES_URL //As is this

               },
               reader: {
                   type: 'json',
                   root: 'Addresses'
               }
           }
       }

      );

Heres是定义静态属性MyApp.props.Url

的类
Ext.define('MyApp.props.Url', {
    statics: {
        Address: {
           ADD_ADDRESS_URL: 'Address/AddAddress',
           GET_ALL_ADDRESSES_URL: 'Address/GetAllAddresses',
           GET_ALL_ADDRESS_TYPES_URL: 'Address/GetAllAddressTypes'
        }
}

});

1 个答案:

答案 0 :(得分:2)

考虑代码的评估顺序。在这种情况下,你实际上是在说:

Ext.define('MyClassName', o);

只有在解析整个对象后,类定义才会传递给define。这意味着只有在我们进入define电话后才会处理要求。

您需要执行以下操作:

Ext.require('MyApp.props.Url', function() {
    console.log(MyApp.props.Url.Address.ADD_ADDRESS_URL);
    Ext.define('MyClass', {});
});