我有以下型号:
Ext.define('MyApp.model.Container', {
extend : 'Ext.data.model',
requires : ['MyApp.model.Item','MyApp.model.User'],
items : [
{
name : 'user',
mapping : 'user',
reference : 'MyApp.model.User',
unique : true
},
{
name : 'item',
mapping : 'item',
reference : 'MyApp.model.Item'
}
],
//******************************
//* GETTERS / SETTERS *
//******************************
getUser : function() {
var me = this;
return me.get('user');
},
getItem: function() {
var me = this;
return me.get('item');
}
});
当我获得用户或项目时,我不会获得用户模型或项目模型,而是获得对象。 如何获取Item模型或User模型而不是Object。
编辑1:
我找到了解决方案,但我不知道它是否是一个很好的解决方案:
Ext.define('MyApp.model.Container', {
[...]
//******************************
//* GETTERS / SETTERS *
//******************************
getUser : function() {
var me = this;
return new MyApp.model.User(me.get('user'));
},
getItem: function() {
var me = this;
return new MyApp.model.Item(me.get('item'));
}
});
编辑2:
在我的第一个例子中,当我加载我的商店时,我得到这个,例如我得到用户:
store
=> getAt(0)
=> data
=> item [...]
=> utilisateur
=> id : '1'
=> name : 'john doe'
=> profil : 'admin'
我想要:
store
=> getAt(0)
=> data
=> item [...]
=> utilisateur
=> $className : "MyApp.model.User"
=> id : '1'
=> name : 'john doe'
=> profil : 'admin'
=> (others properties of model object)
=> (getters and setters functions)
编辑3:
抱歉...我的问题是我使用的是我的现场声明项目而不是字段................
Ext.define('MyApp.model.Container', {
extend : 'Ext.data.model',
requires : ['MyApp.model.Item','MyApp.model.User'],
fields : [
{
name : 'user',
mapping : 'user',
reference : 'MyApp.model.User',
unique : true
},
{
name : 'item',
mapping : 'item',
reference : 'MyApp.model.Item'
}
],
//******************************
//* GETTERS / SETTERS *
//******************************
getUser : function() {
var me = this;
var user = me.user;
if(user) {
return user;
} else {
return null;
}
},
getItem: function() {
var me = this;
var item = me.item;
if(item) {
return item;
} else {
return null;
}
}
});
问候。
答案 0 :(得分:0)
参考字段已经在存储模型的文件夹中查找,因此您只需要修复参考配置。
items : [
{
name : 'user',
mapping : 'user',
reference : 'User', <---
unique : true
},
{
name : 'item',
mapping : 'item',
reference : 'Item' <--
}
]
您也不需要定义函数来获取模型,因为Ext会自动添加getUser()和getItem()。
答案 1 :(得分:-2)
要获得答案,请注意配置名称并查看第三个编辑。