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 の場合があります。その場合、関連ゲッターも 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 に答える