【发布时间】:2011-09-19 09:56:10
【问题描述】:
我在设置关联的商店/模型概念时遇到了一个大问题。
我有模型/商店
app.models.User = Ext.regModel('app.models.User', {
fields: [
{name: 'id', type: 'int'},
{name: 'userID', type: 'string'},
{name: 'userName', type: 'string'}
],
associations: [
{type: 'hasMany', model: 'app.models.Friend', name:'friends', associationKey:'friends'},
]
});
app.models.UserFriendsList = Ext.regModel('app.models.UserFriendsList', {
fields: [
{name: 'id', type: 'int'},
{name: 'userID', type: 'string'},
{name: 'userName', type: 'string'}
],
belongsTo: 'app.models.User',
associations: [
{type: 'hasMany', model: 'app.models.Friend', name: 'friend'}
]
});
app.models.Friend = Ext.regModel('app.models.Friend', {
fields: [
{name: 'id', type: 'int'},
{name: 'userID', type: 'string'},
{name: 'userName', type: 'string'}
],
belongsTo: 'app.models.UserFriendsList',
});
app.stores.userStore = new Ext.data.Store({
model: 'app.models.User',
data:[
{
"id": "01",
"userName": "Username"
"friends": [
{ "id": "02",
"userName": "Friend 1"
},
{ "id": "03",
"userName": "Friend 2"
},
]
}
]
});
然后我用
var currentUser = app.stores.User.getAt(0);
console.log(currentUser);
var friends = currentUser.friends().getAt(0);
console.log(friends);
跟踪有关当前加载用户的一些调试信息。
当我使用不带“name”参数的“associationKey”参数时,跟踪显示数据已正确提取到跟踪对象“currentUser”的数据部分中。但是没有函数 friends() 可以使用。我只得到错误
TypeError: Result of expression 'currentUser.friends' [undefined] is not a function.
当我使用没有“associationKey”参数(或两个参数)的“name”参数时,会创建实例函数 friends(),但不会将数据提取到对象中,因此我无法使用它。
我的代码有什么问题?或者我对概念的误解在哪里?
THNX!!!
【问题讨论】:
标签: model associations sencha-touch store