【发布时间】:2013-01-21 03:28:23
【问题描述】:
希望你做得很好。
我是 extjs4 的新手,正在研究关联的示例。
我有 2 个不同的班级用户和文凭 相对而言,我已经定义了。
用户拥有许多文凭,而文凭属于用户
我的模型如下
User.js
Ext.define('MyApp.model.User', {
extend : 'Ext.data.Model',
idProperty : 'userId',
fields : [{
name : 'userId',
type : 'integer'
}, {
name : 'userName',
type : 'string',
}],
hasMany : {
model : 'MyApp.model.Diploma',
name : 'diplomas',
},
});
Diploma.js
Ext.define('MyApp.model.Diploma', {
extend : 'Ext.data.Model',
idProperty : 'diplomaId',
fields : [{
name : 'diplomaId',
type : 'integer'
}, {
name : 'diplomaName',
type : 'string',
}, {
name : 'userId',
type : 'integer'
}],
associations : [{
model : 'MyApp.model.User',
name : 'user',
type : 'belongsTo'
}]
});
====================== 我的店铺如下=========================
Diploma.js
Ext.define('MyApp.store.Diploma', {
extend : 'Ext.data.Store',
model : 'MyApp.model.Diploma',
autoLoad : true,
listeners : {
'load' : {
fn : function(store, records, success, operation) {
console.log('Diplomas are loaded');
}
}
}
});
User.js
Ext.define('MyApp.store.User', {
extend : 'Ext.data.Store',
model : 'MyApp.model.User',
requires:['Ext.data.proxy.LocalStorage'],
autoLoad : true,
listeners : {
'load' : {
fn : function(store, records, success, operation) {
console.log('User is loaded');
}
}
},
data : [{
userId : 1,
userName : 'Rishabh Shah',
diplomas:{
userId : 1,
diplomaId:1,
diplomaName:'IT'
}
}, {
userId : 2,
userName : 'Rakesh Shah',
diplomas:{
userId : 2,
diplomaId:2,
diplomaName:'CE'
}
}, {
userId : 3,
userName : 'Rashmin Shah'
}],
proxy:{
type:'memory',
reader:{
root:'data'
}
}
});
我可以从这样的用户那里获得文凭并且可以得到结果
Ext.getStore("User").getAt(0).diplomasStore.getAt(0)
但是,当我尝试这样做时
Ext.getStrore("Diploma") or Ext.getStrore("Diploma").getAt(0)
我什么都没有。项目不包含任何内容... 如何从文凭中获取用户。
还有一件事..如果我不在我的文凭模型中编写代理.. 它给了我这样的错误..
Ext.data.proxy.Server.buildUrl():您正在使用 ServerProxy,但尚未为其提供 url。
请指导我。
谢谢。
感谢您的回复..@john..我可以从用户那里获得文凭.. 我想从文凭中获得用户......我自己尝试过......并找到了解决方案......
我将有以下 json。
[
{
"depId": 1,
"depName": "CE",
"employees": [
{
"empId": 1,
"firstName": "Rishabh",
"lastName": "Shah"
}, {
"empId": 2,
"firstName": "Smit",
"lastName": "Patel"
}
]
}, {
"depId": 2,
"depName": "IT",
"employees": [
{
"empId": 1,
"firstName": "Parag",
"lastName": "Raval"
}, {
"empId": 2,
"firstName": "Rakesh",
"lastName": "Prajapati"
}
]
}, {
"depId": 3,
"depName": "EE",
"employees": [
{
"empId": 1,
"firstName": "Parag EE",
"lastName": "Raval EE"
}, {
"empId": 2,
"firstName": "Rakesh EE",
"lastName": "Prajapati EE"
}
]
}, {
"depId": 4,
"depName": "EC",
"employees": [
{
"empId": 1,
"firstName": "Parag EC",
"lastName": "Raval EC"
}, {
"empId": 2,
"firstName": "Rakesh EC",
"lastName": "Prajapati EC"
}
]
}, {
"depId": 5,
"depName": "Chemial E",
"employees": [
{
"empId": 1,
"firstName": "Parag",
"lastName": "Raval"
}, {
"empId": 2,
"firstName": "Rakesh",
"lastName": "Prajapati"
}
]
}, {
"depId": 6,
"depName": "ME",
"employees": [
{
"empId": 1,
"firstName": "Parag",
"lastName": "Raval"
}, {
"empId": 2,
"firstName": "Rakesh",
"lastName": "Prajapati"
}
]
}, {
"depId": 7,
"depName": "Civil Engineer",
"employees": [
{
"empId": 1,
"firstName": "Parag",
"lastName": "Raval"
}, {
"empId": 2,
"firstName": "Rakesh",
"lastName": "Prajapati"
}
]
}
]
我会根据我的要求使用 model.getAssociatedData().user
model 是我的子类记录,user 是我的父类..
我在我的文凭模型中使用了不需要的代理....所以,得到了
Ext.data.proxy.Server.buildUrl():您正在使用 ServerProxy,但尚未为其提供 url。
上述错误。
谢谢大家! :)
【问题讨论】:
-
文凭属于一个用户,但是在加载文凭时,您可能不会将其发送给用户。所以它必须加载用户。反之亦然。用户模型正在尝试加载文凭。它没有使用文凭商店上的代理,但它使用文凭模型上的代理。当您未定义代理时,它会创建一个代理,但此代理没有定义 api/url。关联创建的存储不是文凭存储或用户存储,而是普通的 Ext.data.Store。
-
嘿,@VDP 感谢您的回复。我不明白您在下面的句子中所说的内容。它没有使用文凭商店上的代理,而是使用文凭模型上的代理。当您未定义代理时,它会创建一个代理,但此代理没有定义 api/url。协会创建的商店不是文凭商店或用户商店,而是普通的 Ext.data.Store。 请告诉我好吗?