使用 hasMany 关联在 ExtJS 中填充存储

Populate store in ExtJS using hasMany associations

我试图在模型中一次填充所有记录,然后将每个集合 属性 分配给不同的容器。

即我的页面上有 1 个网格和 1 个组合,并在一次调用中尝试两者。所以我成功获取了数据,但它以嵌套 JSON 数据的形式出现。

Ext.Model ('Person', {
  fields: [
    { name: 'firstname' },
    { name: 'lastname' },
    { name: 'placesOfWork' }
  ],
  associations: [
    { type: 'hasMany', model: 'PlaceOfWork', name: 'placesOfWork' }
});

这是我的模型 class,每当我尝试将其分配给网格时,首先我必须遍历每个 属性,然后在运行时创建一个新存储来分配数据.

首先,我使用 store.reader.JsonData.placesOfWork 读取数据,其中 returns 我是一个 jsonArray,然后使用数组元素创建一个商店。

问题不在于此,因为我在网格和组合中获取了数据。但是每当我尝试获取我的网格和存储或 comboValue 时,它​​总是 returns me null or store size "0"

var grid = Ext.getCmp("MyGRidID");
var store = grid.getStore();
alert(store.getCount());

它 returns 当我的网格中有数据可用时我 0。当我尝试从动态绑定的组合中获取价值时,会发生类似的事情。

    var combo = Ext.getCmp("MyCombo");
    var value = combo.getValue();
    var rawValue = combo.getRawValue();

alert(value);
alert(rawValue);

returns null 和空值。

您进行了不必要的额外体力劳动。首先阅读 Ext 文档中的 Loading Nested Data。然后,你应该有两个模型,它们之间的正确引用,你应该 return 更正来自服务器的 JSON 字符串。

那就很简单了,您不需要手动创建和填充 many 存储,Ext 会为您完成。此外,Ext 创建了 访问函数 placesOfWork(),您可以调用它来获取对 many 存储的引用。