我有ExtJs模型
Ext.define('ManageProducts.model.Related', {
extend : 'Ext.data.Model',
fields : [
{
mapping: 'sequence',
name : 'sequence',
type : 'int',
defaultValue: null
},
{
mapping: 'relatedProduct.id',
name : 'relatedProduct.id',
type : 'int'
},
{
mapping: 'relatedProduct.name',
name : 'relatedProduct.name',
type : 'string'
},
{
mapping: 'relatedProduct.sku',
name : 'relatedProduct.sku',
type : 'string'
},
{
name : 'relatedProduct.pricing.price',
type : 'float',
defaultValue: null
},
{
name : 'relatedProduct.pricing.id',
type : 'int',
defaultValue: null
},
{
mapping: 'relatedProduct.status.id',
name : 'relatedProduct.status.id',
type : 'int'
},
{
name : 'relatedProduct.categories',
type : 'auto',
defaultValue: []
}
],
idProperty: 'relatedProduct.id'
});
必须从数据
创建模型的代码for (var i = 0; i < length; i++) {
model = Ext.ModelManager.create(data[i], 'ManageProducts.model.Related');
}
所以模型数据看起来像
accessoryProduct.categories: Array[0]
accessoryProduct.id: 0
accessoryProduct.name: ""
accessoryProduct.pricing.id: 0
accessoryProduct.pricing.price: 0
accessoryProduct.sku: ""
sequence: 2
status.id: 0
所以它是空的,除了在数据根目录中的序列
和data [i]是
sequence: 2
relatedProduct: Object {
categories: Array[1]
deletedAt: null
description: "Adult Male Asian Articulated Skeleton Description"
educational: "educational for Test product."
id: 6
isGroup: false
name: "Adult Male Asian Articulated Skeleton"
pricing: Object
quantity: 8
sequence: null
showEducational: false
showGroupProducts: false
sku: "SC-092-A"
status: Object
}
__proto__: Object
所以问题是为什么创建的模型是空的? 据我所知它正确地从服务器解析数据... 但为什么不是这样呢?
答案 0 :(得分:0)
您不应该使用ModelManager来创建实例。使用标准的Ext.create:
var model = Ext.create('ManageProducts.model.Related', data[i]);
另一种正确的方法是:
var model = ManageProducts.model.Related.create(data[i])
第一种方式是首选方式,好像没有加载模型类一样,Ext尝试在创建之前加载它,但是如果你使用第二种方式并且没有加载模型类,它就会失败。