我使用ExtJS 4.0.7及其标准的MVC体系结构。我有一个自定义store
和model
类的网格。数据通过store.load()
远程加载。我使用ext-dev.js
进行调试,并使用动态依赖加载。ExtJS 4(MVC)不使用我自定义的模型类
该应用在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'属性,显然Store使用这些来生成它自己的模型,而不是我的'FooModel'中的内容。只要SO会允许我,我会尽快写出答案。 – curtisdf