使用 hasMany 关联在 ExtJS 中填充存储
Posted
技术标签:
【中文标题】使用 hasMany 关联在 ExtJS 中填充存储【英文标题】:Populate store in ExtJS using hasMany associations 【发布时间】:2015-02-26 18:52:40 【问题描述】:我试图在模型中一次填充所有记录,然后将每个集合属性分配给不同的容器。
即我的页面上有 1 个网格和 1 个组合,并在一次通话中同时尝试。所以我成功地获取了数据,但它以嵌套 JSON 数据的形式出现。
Ext.Model ('Person',
fields: [
name: 'firstname' ,
name: 'lastname' ,
name: 'placesOfWork'
],
associations: [
type: 'hasMany', model: 'PlaceOfWork', name: 'placesOfWork'
);
这是我的模型类,每当我尝试将其分配给网格时,首先我必须遍历每个属性,然后在运行时创建一个新存储来分配数据。
首先我使用 store.reader.JsonData.placesOfWork 读取数据,它返回一个 jsonArray,然后使用数组元素创建一个存储。
问题不是这个,因为我在网格和组合中获取了我的数据。但是,每当我尝试获取我的网格并存储或组合值时,它总是返回 null 或存储大小“0”
var grid = Ext.getCmp("MyGRidID");
var store = grid.getStore();
alert(store.getCount());
当我的网格中有数据时,它返回 0。当我尝试从动态绑定的组合中获取价值时,也会发生类似的事情。
var combo = Ext.getCmp("MyCombo");
var value = combo.getValue();
var rawValue = combo.getRawValue();
alert(value);
alert(rawValue);
返回 null 和空值。
【问题讨论】:
【参考方案1】:您进行了不必要的额外手工工作。首先阅读 Ext 文档中的Loading Nested Data。然后,你应该有两个模型,它们之间的正确引用,你应该从服务器返回正确的 JSON 字符串。
那么就很简单了,您不需要手动创建和填充 many 存储,Ext 会为您完成。此外,Ext 创建 访问器函数 placesOfWork()
,您可以调用它来获取对 many 存储的引用。
【讨论】:
以上是关于使用 hasMany 关联在 ExtJS 中填充存储的主要内容,如果未能解决你的问题,请参考以下文章
在 ExtJS4 TreeGrid 中加载嵌套的 JSON 数据