3

Person モデルがあり、id、first_name、last_name など、merital_idフィールドが含まれています。また、Merital モデルには id と title の 2 つのフィールドしか含まれていません。サーバーは次のような JSON を返します。

{
    success: true,
    items: [
        {
            "id":"17",
            "last_name":"Smith",
            "first_name":"John",
            ...
            "marital_id":1,
            "marital": {
                "id":1,
                "title":"Female"
            }
        },
        ...
    ]
}

では、どうすれば自分のモデルをアソシエーションと結び付けることができるでしょうか? column.renderer で record.raw.merital.title を引き続き使用できますが、{last_name} {first_name} ({merital.title}) のようなテンプレートでそのようなフィールドを使用することはできません。関連の王は何を使用する必要がありますか、私は属してみましたが、record.getMarital() を使用しようとすると、「レコードにそのようなメソッドはありません」というエラーが表示されます。

私はextjs 4を使用しています

4

1 に答える 1

7

ExtJS モデルとアソシエーション、特に HasOne アソシエーションを使用する必要があります。

ドキュメンテーション:

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.association.HasOne

例:

http://jsfiddle.net/el_chief/yrTVn/2/

Ext.define('Person', {
    extend: 'Ext.data.Model',
    fields: [
        'id',
        'first_name',
        'last_name'
        ],

    hasOne: [
        {
        name: 'marital',
        model: 'Marital',
        associationKey: 'marital' // <- this is the same as what is in the JSON response
        }
    ],

    proxy: {
        type: 'ajax',
        url: 'whatever',
        reader: {
            type: 'json',
            root: 'items' // <- same as in the JSON response
        }
    }
});
于 2012-07-19T17:21:53.597 に答える