ExtJS 5:了解 Ext.data.field.Field.reference 配置属性
ExtJS 5: Understanding Ext.data.field.Field.reference config properties
我想了解 Ext.data.field.Field.reference 配置的作用,因为名称有点尴尬。我想要做的是拥有如下所示的数据:
[{
name: 'Mulder',
state: 'Virginia',
friends: [{
name: 'Scully',
type: 'partner'
}, {
name: 'Smoking Man',
type: 'dad'
}]
}]
并使用模型消化它,所以我这样创建它们:
Ext.define('Agent', {
extend: 'Ext.data.Model',
fields: ['name', 'state']
});
Ext.define('Relationship', {
extend: 'Ext.data.Model',
fields: ['name', 'type', {
name: 'agentId',
reference: {
type: 'Agent',
inverse: {
role: 'friends'
}
}
}]
});
我将 inverse 作为关系模型对象的原因是 this thread... basically, I wanted my model named something differently from the retrieved data, so instead of a Friend
model, I want it to be called Relationship
and reference friends
in the data, but all of that was undocumented. After I solved that, I created my store (test Fiddle here):
Ext.create('Ext.data.Store', {
model: 'Agent',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'data3.json',
reader: {
type: 'json'
}
},
listeners: {
load: function(store) {
// outputs friends as a function and getFriends as null
console.log('Agent', store.first().friends, store.first().getFriends);
}
}
});
所以我想做的是让我的 getter 朋友方法被称为 getFriends
而不是 friends
,但是通过查看文档,我不是完全确定我使用哪个配置来指定它。我已经尝试了那些看起来很可能的候选者(关联、角色和逆)。在这一点上,我很确定它是我在反向对象中设置的 属性,但鉴于它没有记录,我不知道。
以前,在版本 4 中,我们有 hasMany
关联,但似乎被推 aside/undocumented 代替 reference
方式。我们将通过将此添加到 Agent
模型来完成我正在尝试做的事情(请参阅 Fiddle 的工作示例):
hasMany: [{
model: 'RelationshipHasMany',
associationKey: 'friends',
name: 'getFriends'
}]
有没有人知道如何命名我的 getter?也许您还可以解释属性 association
和 role
的作用。
您想使用 getterName
:
inverse: {
role: 'friends',
getterName: 'getFriends'
}
我想了解 Ext.data.field.Field.reference 配置的作用,因为名称有点尴尬。我想要做的是拥有如下所示的数据:
[{
name: 'Mulder',
state: 'Virginia',
friends: [{
name: 'Scully',
type: 'partner'
}, {
name: 'Smoking Man',
type: 'dad'
}]
}]
并使用模型消化它,所以我这样创建它们:
Ext.define('Agent', {
extend: 'Ext.data.Model',
fields: ['name', 'state']
});
Ext.define('Relationship', {
extend: 'Ext.data.Model',
fields: ['name', 'type', {
name: 'agentId',
reference: {
type: 'Agent',
inverse: {
role: 'friends'
}
}
}]
});
我将 inverse 作为关系模型对象的原因是 this thread... basically, I wanted my model named something differently from the retrieved data, so instead of a Friend
model, I want it to be called Relationship
and reference friends
in the data, but all of that was undocumented. After I solved that, I created my store (test Fiddle here):
Ext.create('Ext.data.Store', {
model: 'Agent',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'data3.json',
reader: {
type: 'json'
}
},
listeners: {
load: function(store) {
// outputs friends as a function and getFriends as null
console.log('Agent', store.first().friends, store.first().getFriends);
}
}
});
所以我想做的是让我的 getter 朋友方法被称为 getFriends
而不是 friends
,但是通过查看文档,我不是完全确定我使用哪个配置来指定它。我已经尝试了那些看起来很可能的候选者(关联、角色和逆)。在这一点上,我很确定它是我在反向对象中设置的 属性,但鉴于它没有记录,我不知道。
以前,在版本 4 中,我们有 hasMany
关联,但似乎被推 aside/undocumented 代替 reference
方式。我们将通过将此添加到 Agent
模型来完成我正在尝试做的事情(请参阅 Fiddle 的工作示例):
hasMany: [{
model: 'RelationshipHasMany',
associationKey: 'friends',
name: 'getFriends'
}]
有没有人知道如何命名我的 getter?也许您还可以解释属性 association
和 role
的作用。
您想使用 getterName
:
inverse: {
role: 'friends',
getterName: 'getFriends'
}