ExtJS 5.0,由于模型名称空间而在viewModel.linkTo()调用期间出错

时间:2014-11-26 22:02:18

标签: extjs extjs5

我有一个位于域文件夹i:e

内的模型
app
   |--model
         |--domain1
                   |--ApplicationInfoModel
                   |--AddressModel
                   |--ProducerInfoModel
                   |--CarrierInfoModel
                   |--ApplicantInfoModel
                   |....
         |--domain2
                   |
                   |--AddressModel
                   |....

现在,当我尝试使用viewModel的linkTo

动态加载数据时
   requires: [
    'Ext.MessageBox',
    'RA.model.domain1.ApplicationInfoModel',
    'RA.model.domain1.ApplicantInfoModel'        
    ],
    ....
    ....
    ....
    init:function()
    {
         this.getViewModel().linkTo('applicationData',
         {            
             reference:"ApplicationInfoModel",
             id:'appl-0000001',                     
             autoLoad:true
         }); 
     }

我收到错误

       [E] Ext.app.ViewModel.getRecord(): Invalid model name:                
       ApplicationInfoModelUtil.js:Util.js:710 
       Objectmsg: "Invalid model name: ApplicationInfoModel"
       sourceClass: "Ext.app.ViewModel"
       sourceMethod: "getRecord"

任何,建议???

修改

我所有模型的My Base模型。

Ext.define('RA.model.Base', {
extend: 'Ext.data.Model',

fields: [{
    name: 'id',
    type: 'int'
}],
schema: {
    namespace: 'RA.model',
    urlPrefix:'app/model',
    proxy: {
        url: '{prefix}/{entityName}',
        pageParam: '',
        startParam: '',
        limitParam: ''
    }
}
});

编辑2:

如果我将引用包含为:

reference:'domain1.ApplicationInfoModel',

-- or --

reference:'RA.model.domain1.ApplicationInfoModel',

我得到以下错误,当它试图在同一域下拉相关模型时会发生错误。

GET http://localhost:8080/ra-ui/js/app/model/domain1.ApplicantInfoModel?_dc=1417096649804 404 (Not Found)
该协议如下:

 Ext.define('RA.model.domain1.ApplicationInfoModel', 
 {
requires:['RA.model.domain1.ProducerInfoModel',
          'RA.model.domain1.CarrierInfoModel',
          'RA.model.domain1.ApplicantInfoModel'
          ],    
extend: 'Ext.data.Model',
idProperty:'appid',
fields:[{
            name:'appid',type:'string'
        },
        {
            name:'producer',
            reference:'ProducerInfoModel'
        },
        {
            name:'carrier',
            reference:'CarrierInfoModel'
        }           
        ],
hasMany:[       
    {           
        name:'applicants',          
        model:'RA.model.domain1.ApplicantInfoModel' 
    }
],

3 个答案:

答案 0 :(得分:0)

您需要使用完全限定的型号名称。

答案 1 :(得分:0)

作为使用完全限定模型名称的替代方法,您还可以使用命名空间(基本上是从模型名称中输入的前缀)配置模式。来自docs

 Ext.define('MyApp.models.Base', {
   extend: 'Ext.data.Model',

   schema: {
     namespace: 'MyApp.models'
   }
 });

其中MyApp.models.Base被用作您自己模型的父类。

答案 2 :(得分:0)

也许这是一个错误的类型,但您的域名文件夹中没有RA.model.domain1.ApplicationInfoModel