我有一个模型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'
我出了什么问题?
答案 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';