1

我有一个模型横幅和一个模型 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 将为关联自动生成一个 getter 函数,其格式为:'getModelName'。如果您从关联中删除了 getterName,则横幅模型上的 getter 函数将与您定义的相同:'getBannerFormat';

于 2012-05-25T20:00:05.757 回答