1

我试图弄清楚似乎是最简单的事情:

我想通过返回 JSON 的服务器端调用加载一组对象,

为什么所有这些都会返回一些意想不到的东西?

> modelStore.data.items[0].Id
undefined
> modelStore.data.items[0].getId()
undefined
> modelStore.data.items[0].getTitle()
TypeError: Object [object Object] has no method 'getTitle'
> modelStore.getById(1)
null
> modelStore.getTotalCount()
1
> modelStore.first()
Ext.Class.newClass < should be PegModel??

编码:

Ext.define('PegfileApp.model.PegModel', {

  extend: 'Ext.data.Model',

  fields: ['Id', 'Title'],

  //hasMany: {model: 'RootDimension', name: 'rootDimensions'},

  proxy:
  {
    type: 'ajax',
    url: 'PegModel',
    timeout: 120000,
    noCache: false,
    reader:
    {
      root: 'PegModel',
      successProperty: 'success'
    }
  }
});

Ext.define('PegfileApp.store.PegModels', {
  extend: 'Ext.data.Store',
  model: 'PegfileApp.model.PegModel',
  autoLoad: true,
  autoSync: false,
  proxy: {
    type: 'ajax',
    url: 'PegModel',
    reader: {
      type: 'json',
      root: 'PegModels',
      successProperty: 'success'
    }
  }
});

数据:

{"PegModels":[{"Title":"PegModel","Id":1}],"success":true}

我理解对于模型上定义的每个属性,我们都有一个相应的 getter:get{PropertyName}()?

我是否需要以某种方式将“记录”转换为“模型”?

4

2 回答 2

3

您快到了。:)

商店有一系列模型,但您不能直接通过items[]. 例如,您使用store.getAt(index)方法代替store.items[index]

另请查看store.find()方法和类似方法,以了解如何获取特定记录的索引。

一旦你得到记录,这将是你record.get('fieldname')用来获取不同字段的模型实例。

于 2012-07-11T12:51:13.570 回答
1

意识到这是一个旧帖子,但即使在今天仍然出现很多。为简化起见,请考虑对对象建模并存储数组。Store 是一个对象数组。有时您只使用一个对象。其他时候,您想使用对象集合。诸如 Ext 之类的库使用允许您更方便地操作它们的方法来扩展这些“对象”和“数组”。

于 2015-01-16T15:34:56.117 回答