【问题标题】:Populate store in ExtJS using hasMany associations使用 hasMany 关联在 ExtJS 中填充存储
【发布时间】: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 和空值。

【问题讨论】:

    标签: javascript extjs extjs4 has-many gridpanel


    【解决方案1】:

    您进行了不必要的额外手工工作。首先阅读 Ext 文档中的Loading Nested Data。然后,你应该有两个模型,它们之间的正确引用,你应该从服务器返回正确的 JSON 字符串。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多