ExtJs - 如何使用包含模型配置的 json 文件动态创建 Ext.data.Model 的实例
ExtJs - How to create instance of Ext.data.Model dynamically using json file containing Model configs
我使用的是 ExtJs 版本 5.0.0.970。我有一个 Json 文件,其中包含与模型相关的配置。以下是 Json 文件的结构 -
{
"model": {
"requires": ["Ext.data.Field"],
"fields": [
{
"name" : "carName",
"mapping" : "carName"
},
{
"name" : "carPrice.currency",
"mapping" : "carPrice.currency"
}
]
}
}
使用以上 Json 我正在尝试以下列方式动态创建模型 -
//gridModelJsonData variable contains the content of json.model object
Ext.create("Ext.data.Model",gridModelJsonData);
一旦执行上面的代码行,我就会在控制台中收到以下错误 -
Model.js?_dc=1471922882661:2367 Uncaught TypeError: Cannot read property 'length' of undefined
Ext.data.Model#rankFields @ Model.js?_dc=1471922882661:2367
Ext.data.Model#makeInitializeFn @ Model.js?_dc=1471922882661:2824
Ext.data.Model#constructor @ Model.js?_dc=1471922882661:378
Ext.data.Model @ Class.js?_dc=1471922882661:29
Ext.create1 @ VM11599:3create @ ClassManager.js?_dc=1471922882661:1413
请告诉我如何解决这个问题!
谢谢!
您应该定义模型的字段(即模型的元数据),然后创建模型:
var jsonData = {
"model": {
"fields": [
{
"name" : "carName",
"mapping" : "carName"
},
{
"name" : "carPrice.currency",
"mapping" : "carPrice.currency"
}
]
}
};
Ext.define('CarModel', { //Defining a model, which is like an object
extend : 'Ext.data.Model',
fields : [
{name: 'name', type: 'string'},
{name: 'mapping', type: 'string'}
]
});
var gridModelJsonData = jsonData.model;
var carModels = [];
for(var i =0; i < gridModelJsonData.fields.length; i++) {
carModels.push(Ext.create('CarModel', gridModelJsonData.fields[i]));
}
for(var i =0; i < carModels.length; i++) {
console.log('CarModel[' + i + '].name=' + carModels[i].get('name'));
console.log('CarModel[' + i + '].mapping=' + carModels[i].get('mapping'));
}
。看到这个 fiddle
我使用的是 ExtJs 版本 5.0.0.970。我有一个 Json 文件,其中包含与模型相关的配置。以下是 Json 文件的结构 -
{
"model": {
"requires": ["Ext.data.Field"],
"fields": [
{
"name" : "carName",
"mapping" : "carName"
},
{
"name" : "carPrice.currency",
"mapping" : "carPrice.currency"
}
]
}
}
使用以上 Json 我正在尝试以下列方式动态创建模型 -
//gridModelJsonData variable contains the content of json.model object
Ext.create("Ext.data.Model",gridModelJsonData);
一旦执行上面的代码行,我就会在控制台中收到以下错误 -
Model.js?_dc=1471922882661:2367 Uncaught TypeError: Cannot read property 'length' of undefined
Ext.data.Model#rankFields @ Model.js?_dc=1471922882661:2367
Ext.data.Model#makeInitializeFn @ Model.js?_dc=1471922882661:2824
Ext.data.Model#constructor @ Model.js?_dc=1471922882661:378
Ext.data.Model @ Class.js?_dc=1471922882661:29
Ext.create1 @ VM11599:3create @ ClassManager.js?_dc=1471922882661:1413
请告诉我如何解决这个问题! 谢谢!
您应该定义模型的字段(即模型的元数据),然后创建模型:
var jsonData = {
"model": {
"fields": [
{
"name" : "carName",
"mapping" : "carName"
},
{
"name" : "carPrice.currency",
"mapping" : "carPrice.currency"
}
]
}
};
Ext.define('CarModel', { //Defining a model, which is like an object
extend : 'Ext.data.Model',
fields : [
{name: 'name', type: 'string'},
{name: 'mapping', type: 'string'}
]
});
var gridModelJsonData = jsonData.model;
var carModels = [];
for(var i =0; i < gridModelJsonData.fields.length; i++) {
carModels.push(Ext.create('CarModel', gridModelJsonData.fields[i]));
}
for(var i =0; i < carModels.length; i++) {
console.log('CarModel[' + i + '].name=' + carModels[i].get('name'));
console.log('CarModel[' + i + '].mapping=' + carModels[i].get('mapping'));
}
。看到这个 fiddle