【问题标题】:Ext.ModelManager.getModel has been deprecated in extjs 5Ext.ModelManager.getModel 在 extjs 5 中已被弃用
【发布时间】:2015-08-10 10:40:24
【问题描述】:

我是upgrading my extjs 4.2 app to extjs 5.1

ExtJs 4.2,我有创建dynamic module的代码,但是

ExtJs 5.1 Ext.ModelManager.getModel has been deprecated 和 根据 ExtJs 5.1 文档,它说改用 Ext.data.schema.Schema

我尝试使用Ext.data.schema.Schema.lookupEntity("DynamicModel"),但它会抛出错误提示

[E] Ext.data.schema.Schema.lookupEntity():没有这样的实体“DynamicModel”。

如何在 ExtJs 5 中获取任何模型对象?

如何在 extjs 5.1 中实现 getModel() 方法的替换,请在下面找到我的代码,

if (!Ext.ModelManager.getModel('DynamicModel')){
    Ext.define('DynamicModel', {
       extend: 'Ext.data.Model',
       idProperty : uniqueIdProperty,
       fields: fields
    });
} else {
    Ext.ModelManager.getModel('DynamicModel').setFields(fields);
}

【问题讨论】:

    标签: javascript extjs model-view-controller extjs4 extjs5


    【解决方案1】:

    如果你想检查你的模型是否已经创建,那么你可以使用isCreated of Ext.ClassManager

    Ext.ClassManager.isCreated('MyModel');
    

    如果它返回true,那么你可以这样做

    Ext.ClassManager.get('MyModel')
    

    使用架构:Fiddle

    if(!Ext.data.schema.Schema.instances.default.hasEntity('MyModel')){ // a default schema instance is created by default
                Ext.define('MyApp.models.MyModel', {
                   extend: 'MyApp.models.Base',
                   fields: [{name: 'field'}]  
                });
            } else {
                Ext.data.schema.Schema.instances.default.getEntity('MyModel');// returns the constructor MyApp.models.MyModel()
            }
    

    【讨论】:

      【解决方案2】:

      如果您像我一样遇到上述语法的问题,因为 'default' 是保留字,您可以使用以下语法:

      if (!Ext.data.schema.Schema.instances['default'].getEntity('MyModel')) {
          ...
      }
      

      IDK 为什么 Sencha 使用保留字作为属性,但是……哦,好吧……

      【讨论】:

        猜你喜欢
        • 2016-04-18
        • 2021-02-21
        • 2017-06-19
        • 2019-04-04
        • 2018-12-12
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多