ExtJS モデル フィールドにはマッピング オプションがあります。
fields: [
{name: 'brandId', mapping:'brand.id', type: 'int'},
{name: 'brandName', mapping:'brand.name', type: 'string'},
問題は、サーバーからの応答に一部のフィールド (私の例ではブランド フィールド) が含まれておらず、内部フィールドからのマッピングが定義されている場合、Ext Store は何も表示されずにレコードのロードに失敗することです。
誰もこれに問題がありますか?バグの一種でしょうか?
更新 明確にするために、モデルに10個のフィールドがあるとします。サーバーからの応答には 9 つのフィールドがあり、1 つがありません。このフィールドにネストされたマッピング (マッピング:'xyz') がない場合、すべて問題ありません。ストアはレコードをロードし、フィールドは空です。ただし、このフィールドをネストされたフィールドからロードする必要があり、マッピング オプションがある場合、store は何もロードできません。
更新 2 問題を引き起こすコードを見つけました。事実: Ext が Json からいくつかのフィールドをロードしようとすると、次のようなチェックが実行されます。
(source["id"] === undefined) ? __field0.defaultValue : source["id"]
しかし、フィールドにマッピング オプション (mapping 'brand.id') がある場合、リーダーはこのようにします。
(source.brand.id === undefined) ? __field20.defaultValue : source.brand.id
ソースにブランド フィールドがない場合、エラーが発生します。
私と同じ問題がある場合: Ext.data.reader.Jsonのメソッド createFieldAccessExpressionをオーバーロードすることで修正できます