如何获得带有sencha touch的hasOne模型

时间:2012-05-21 12:40:24

标签: sencha-touch sencha-touch-2

我有一个模型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'

我出了什么问题?

1 个答案:

答案 0 :(得分: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';