【问题标题】:extjs 4 me.model undfined error when creating storeextjs 4 me.model 创建商店时出现未定义错误
【发布时间】:2012-08-06 23:38:39
【问题描述】:

尝试创建这个非常简单的存储时出现错误。我想知道是什么原因造成的以及如何解决。任何帮助表示赞赏:

me.model 未定义

var sortAvailable = Ext.create('Ext.data.Store', {
  model: 'model_Im_Using',
  storeId:'sortAvailable'

});

下面是模型的代码,虽然我不认为这是问题的一部分

Ext.define('APPNAME.model.model_Im_Using', {
  extend: 'Ext.data.Model',
  modelID: 'BrField',

  fields:[
    {name:'displayName', type:'string'},
    {name:'databaseName', type:'string'}
  ]

});

模型在自己的文件中定义在 model/model_Im_using.js 我已经在同一个文件中使用了这个模型和一些树存储

我确定我遗漏了一些明显的东西。该商店旨在将模型实例放入其中/从本地获取。与服务器端没有通信。

编辑:错误所在的行是:

me.setProxy(me.proxy || me.model.getProxy());

【问题讨论】:

  • model_Im_Using 的声明位置和方式?
  • 模型如果在它自己的文件中定义。我已经成功地在同一个文件中的几个树库中使用了该模型,没有任何抱怨
  • @DmitryB 我有一个模型定义
  • 很可能是您的这段代码在模型定义之前加载。
  • 这是可能的,但我在它上面创建了一个树存储,它使用相同的模型。这部分工作正常,所以我不认为就是这样。

标签: extjs model extjs4 store


【解决方案1】:
  1. 如果使用命名空间,则必须使用命名空间。你不能混搭。把store.model改成APPNAME.model.model_Im_Using应该没问题。

  2. 什么是model.modelID?

  3. 您应该关注 Sencha naming conventions

这是一个使用正确命名空间的示例,而没有命名空间则无法工作:

http://jsfiddle.net/UMXNZ/

Ext.define('APPNAME.model.model_Im_Using', {
  extend: 'Ext.data.Model',
  modelID: 'BrField',

  fields:[
    {name:'displayName', type:'string'},
    {name:'databaseName', type:'string'}
  ]

});


var sortAvailable = Ext.create('Ext.data.Store', {
  model: 'APPNAME.model.model_Im_Using',
  storeId:'sortAvailable'

});
console.log('ok');

var sortAvailable2 = Ext.create('Ext.data.Store', {
  model: 'model_Im_Using',
  storeId:'sortAvailable'

});
console.log('ok');

而使用短名称时的错误信息是:

没有模型定义的商店。您可能输入了错误的型号名称。

【讨论】:

  • 3) 错误。正如我所说,我在上面的树库中引用了同名的模型。
  • @BBB 如果您将代码更改为model: 'APPNAME.model.model_Im_Using',它将起作用。尼尔,您的回答是在谴责 OP,1 和 2 是不必要的
  • @Bbb 你错了。这里它与命名空间一起工作,没有它就不能工作:jsfiddle.net/UMXNZ
  • @Juan。那真的不是解决方案,我在另一家商店成功地做到了。我试过这种方式,我得到了同样的错误。
  • @Neil。我提到模型是在不同的文件中定义的。你的解决方案不是我问题的解决方案。
【解决方案2】:

将下面的配置行添加到商店处理错误

proxy: {type: 'memory'}

【讨论】:

  • 我不太明白。如果您还没有定义您的代理,那么该模型以前是如何工作的?您在 TreeStore 上是否有代理,但在这个新的商店/模型组合中忘记了代理?
  • 不,树存储不工作。经过进一步检查,这可能不是解决方案。如果我不打算让应用程序访问服务器,而只是保存信息,我应该如何定义代理??
【解决方案3】:

对于我的 mvc 项目(使用 extjs 4.2)我遇到了同样的问题,但这不是因为我输入了错误的模型名称。

您还必须在控制器的开头添加一个要求:

    requires:
    [
        'dashboard.model.Column' // > my model
    ],

然后您可以像这样在控制器的新功能中以编程方式创建新商店:

        Ext.create('Ext.data.Store',{
             model:'dashboard.model.Column',
             storeId:'myStoreId'
        });

也许它可以帮助一些人。

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 2012-10-01
    • 2012-06-02
    • 1970-01-01
    • 2012-12-21
    • 2012-05-28
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    相关资源
    最近更新 更多