Ext.data.Model
类代表后端模型。就像在服务器代码中一样,它的一些字段可以通过reference
属性成为另一个声明的模型类型。我发现使用模型的getAssociatedData()
函数会返回一个包含所有这些引用字段的对象。但是它们只包含引用对象的数据对象,它们不是完全初始化的Ext.data.Model
,它强制原始对象访问,并且无法使用模型的已配置代理等进行加载/保存。这是使用此功能的正确/唯一方式吗?我们一直在寻找一种从网格上的引用字段添加列的方法,但它似乎不起作用......我开始怀疑声明引用字段的用处。
示例代码:
Ext.define('MyApp.ModelA', {
extend: 'Ext.data.Model',
fields: [{
name: 'modelb',
reference: 'MyApp.ModelB'
}]
});
Ext.define('MyApp.ModelB', {
extend: 'Ext.data.Model',
fields: [{
name: 'modelId',
type: 'int'
}]
});
//...
var modelA = new MyApp.ModelA().load();
var modelB = modelA.getAssociatedData().modelb; //This is the only way to access it.
var modelBId = modelB.get('modelId') //This returns undefined because the function .get doesn't exist.
var modelBId = modelB.id; //This works because it is a simple object property access.
//...
答案 0 :(得分:0)
正如Chad Peruggia所说,ExtJS似乎为reference
字段创建了与字段名称匹配的特殊getter。使用getAssociatedData()
只返回这些对象的原始形式(只有它们的data
值),但使用特殊的getter(在我的情况下为getModelb()
),它返回一个用给定数据初始化的完整模型