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}

モデルで定義されたプロパティごとに、対応するゲッターがあることを理解しました: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

これは古い投稿ですが、今日でも多くのことが出てきます。簡単にするために、オブジェクトのモデル化と配列の格納を検討してください。ストアはオブジェクトの配列です。オブジェクトだけを操作する場合もあります。また、オブジェクトのコレクションを操作したい場合もあります。Extなどのライブラリは、これらの「オブジェクト」と「配列」を、より便利に操作できるメソッドで拡張します。

于 2015-01-16T15:34:56.117 に答える