1

我在 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 数据中的“父”或“客户”为 null,在这种情况下,关联 getter 也应该返回 null。但相反,我得到了一个例外:

Con 不是构造函数

来自 create() 中的 ModelManager.js。发生这种情况是因为 BelongsTo 关联正在尝试使用 associatedName(即“Parent”或“Customer”)创建一个新实例。这对我来说零意义。

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

4

1 回答 1

1

你是对的,它应该创建一个getter返回的函数null

这是一个解决方法:

设置关系,并instanceNamebelongsTo调用之前检查它是否存在getter

...
{type: 'belongsTo', model: 'FM.model.Company', associatedName: 'Customer', instanceName:'customer'}
...

if(myProject.customer){
  console.log(myProject.getCustomer().get('name'));
}

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

于 2013-05-11T19:57:53.750 回答