这是我想使用 json 文件创建的模型
Ext.define('Users', {
extend: 'Ext.data.Model',
fields: [{name: 'user_id', type: 'int'},
{name: 'user_name', type: 'string'}]
});
根据来自服务器的 json 响应的内容,我需要做什么才能自动创建此模型?
这是我想使用 json 文件创建的模型
Ext.define('Users', {
extend: 'Ext.data.Model',
fields: [{name: 'user_id', type: 'int'},
{name: 'user_name', type: 'string'}]
});
根据来自服务器的 json 响应的内容,我需要做什么才能自动创建此模型?
为了自动创建模型,您需要在metaData
Json 数据中包含该字段。metaData
可用于描述模型的所有字段。
在 ExtJS 4.1 文档中 - Ext.data.reader.Json有一个名为 Response MetaData 的部分描述了此功能的基本使用。
您应该能够提取一些带有字段的 json,或者可以很容易地转换为该格式的某种格式。
致电服务以获取模型的字段。可能需要定义一些首先调用模型服务并在之后执行后续步骤的链。
构建模型的字段数组,其中包含来自 #1 的字段结果。可能需要根据 #1 中的响应转换数据。
var fields = response.fields;
根据 Store 构造函数中的字段定义模型
var store = Ext.create('Ext.data.Store', {
constructor: function () {
var model = Ext.define("Users", {
extend: "Ext.data.Model",
fields: fields
});
this.model = model.$className;
this.callParent(arguments);
}
});
我只使用jsonp,它加载一个json文件并自动解析它,不知道Ext.Ajax是否也这样做。
但是你会做这样的事情:
定义.json:
{
"name": "User",
"fields": [
{ "name": "user_id" , "type": "int" },
{ "name": "user_name", "type": "string" }
]
}
加载它:
Ext.Ajax.request({
url : "..../definition.json"
success: function( res ) {
Ext.define( res.name, {
extend: 'Ext.data.Model',
fields: res.fields
}, function() {
Ext.create( 'somestore', { model: res.name });
});
}
});