1

モデル Banner とモデル BannerFormat があります。バナーにはバナー形式があります。バナーとバナー形式の間の hasOne 関係を構成するために、私はこれを書きました:

Ext.define('admin.model.Banner', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            { name: 'id', type: 'int' },
            { name: 'banner_format_id', type: 'int' },
            'code',
            'active',
            'start_at',
            'end_at'
        ],
        associations: { type: 'hasOne', model: 'admin.model.BannerFormat', getterName: 'getBannerFormat' },
        proxy: {
            type: 'ajax',
            url: '/admin/api_query.php',
            extraParams: {
                table: 'content_banners',
                type: 'GET'
            }
        }
    }
});

そして、私の bannerFormat モデルでは:

Ext.define('admin.model.BannerFormat', {
    extend: 'Ext.data.Model',
    config: {
        fields: ['id', 'format'],
        associations: { type: 'hasMany', model: 'admin.model.Banner' },
        proxy: {
            type: 'ajax',
            url: '/admin/api_query.php',
            extraParams: {
                table: 'content_banner_formats',
                type: 'GET'
            }
        }
    }
});

しかし、banner.getBannerFormat() を呼び出すと、次のようになりました。

Uncaught TypeError: Object [object Object] has no method 'getBannerFormat'

私は何を間違えたのですか?

4

1 に答える 1

1

バナー オブジェクトを作成し、それを呼び出して定義済みの関連付けを取得していますか?

これはあなたのために働くはずです:

var banner = Ext.create('admin.model.Banner', {
    id: 100,
    banner_format_id: 20,
    code: 'ABC123',
    active: true,
    start_at: 1,
    end_at: 5
});

banner.getBannerFormat();

また、必要がない場合は、関連付けに getterName を指定する必要はありません。Sencha は、'getModelName' の形式に従って、関連付けのゲッター関数を自動生成します。アソシエーションから getterName を削除すると、バナー モデルの getter 関数は次のように定義したものと同じになります。

于 2012-05-25T20:00:05.757 に答える