处理extjs 4模型中的空关联

时间:2013-03-20 15:48:06

标签: extjs

我已向Sencha论坛发布了同样的问题:http://www.sencha.com/forum/showthread.php?259313-Dealing-with-nulls-in-nested-data&p=949429#post949429

我无法理解关联应该如何工作(在ExtJS 4.1.1a中)。 考虑以下模型:

Ext.define('FM.model.Project', {
    extend: 'Ext.data.Model',
    requires: ['FM.model.Company'],

    fields: [
        'id',
        'customer_id',
        'parent_id',
        'name',
        'code',
        'supervisor_id',
        'start_date',
        'end_date',
        'budgeted_hours',
        'budgeted_sales',
        'budgeted_working_cost',
        'budgeted_material_cost',
        'info'
    ],

    associations: [
        {type: 'belongsTo', model: 'FM.model.Company', associatedName: 'Customer'},
        {type: 'belongsTo', model: 'FM.model.Project', associatedName: 'Parent'},
    ]
});

有时,JSON数据中的“父”或“客户”为空,在这种情况下,关联getter也应返回null。但相反,我得到一个例外:

  

Con不是构造函数

来自create()中的ModelManager.js。发生这种情况是因为BelongsTo关联尝试使用associatedName(“父”或“客户”)创建新实例。这对我来说毫无意义。

我应该如何处理这些缺失的关联?构建虚拟新实例不是一个好的解决方案,因为我需要能够判断相关数据是否存在。

1 个答案:

答案 0 :(得分:1)

你是对的,它应该创建一个返回getter的{​​{1}}函数。

这是一个解决方法:

设置null关系的instanceName,并在调用belongsTo之前检查它是否存在:

getter

http://jsfiddle.net/4TSDu/55/