ExtJS 4(MVC)商店不使用我的自定义模型类
Posted
技术标签:
【中文标题】ExtJS 4(MVC)商店不使用我的自定义模型类【英文标题】:ExtJS 4 (MVC) Store not using my custom Model class 【发布时间】:2012-05-23 23:29:16 【问题描述】:我正在使用带有标准 MVC 架构的 ExtJS 4.0.7。我有一个自定义 store
和 model
类的网格。数据通过store.load()
远程加载。我正在使用ext-dev.js
进行动态依赖加载的调试。
应用加载正常,在 Chrome 的控制台中没有错误。但问题是我商店中的记录与我的 AJAX 调用提供的数据完全相同,无论我的模型中有哪些字段。我什至尝试重命名和删除字段,但 Ext 没有注意。
使用控制台浏览我的store
对象显示所有记录都有自己的自定义运行时生成模型类,名为Ext.data.reader.Json-Modelext-gen1141
。这是我的代码的要点:
我的模特:
Ext.define('MyApp.model.FooModel',
extend: 'Ext.data.Model',
idProperty: 'column1',
fields: [
name: 'column1', convert: function(value, record)
return value + ' TEST-TEST-TEST';
,
'column2',
'column3'
]
);
我的商店:
Ext.define('MyApp.store.FooStore',
extend: 'Ext.data.Store',
model: 'MyApp.model.FooModel',
autoLoad: false,
proxy:
type: 'ajax',
url: '/blah/blah',
reader:
type: 'json'
);
我的网格:
Ext.define('MyApp.view.FooGrid',
extend: 'Ext.grid.Panel',
alias: 'fooGrid',
store: 'FooStore',
columns: [
text: 'Column 1',
dataIndex: 'column1',
flex: 1
,
text: 'Column 2',
dataIndex: 'column2',
flex: 1
,
text: 'Column 3',
dataIndex: 'column3',
flex: 1
]
);
我的控制器:
Ext.define('MyApp.controller.Foo',
extend: 'Ext.app.Controller',
views: ['FooGridFrame'],
models: ['FooModel'],
stores: ['FooStore'],
init: function()
this.control(
'fooGrid':
activate: function(grid)
grid.getStore().load();
);
);
我不知道我做错了什么。有什么想法吗?
【问题讨论】:
我找到了答案。我的数据提要有一个metaData
属性指定字段配置,显然商店正在使用这些来生成自己的模型,而不是我的 FooModel
中的模型。我会尽快将其写成答案。
【参考方案1】:
事实证明,AJAX 后端(由另一个开发人员为 Ext3 编写)通过 metaData
属性提供了一些配置数据。我不知道 Ext 的Store
对此有任何关注。我的问题已通过更新后端以省略 metaData
属性得到解决。
它可能也可以更新 metaData
以提供我需要的适当配置,但我正在重构以使所有 UI 配置都发生在客户端中。
【讨论】:
以上是关于ExtJS 4(MVC)商店不使用我的自定义模型类的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ExtJs 4 和 MVC 从另一个类访问一个类?
如何在 extjs 4 (mvc) 中过滤静态 treeStore