Ext.data.model不解析来自对象的数据

时间:2014-08-22 14:40:13

标签: javascript extjs model

我有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

所以问题是为什么创建的模型是空的? 据我所知它正确地从服务器解析数据... 但为什么不是这样呢?

1 个答案:

答案 0 :(得分:0)

您不应该使用ModelManager来创建实例。使用标准的Ext.create:

var model = Ext.create('ManageProducts.model.Related', data[i]);

另一种正确的方法是:

var model = ManageProducts.model.Related.create(data[i])

第一种方式是首选方式,好像没有加载模型类一样,Ext尝试在创建之前加载它,但是如果你使用第二种方式并且没有加载模型类,它就会失败。