1

Sencha Touch 2を使用してArrayStoreでレコードを検索しようとすると、レコードが返されません。

store.findExact('Symbol', 'GOOG')

-1を返します。

下のスクリーンショットに示すように、

store.getRange()

44レコードを返し、

store.first()

レコードを返しますが、

store.first().get('Ask')

undefinedを返します。

さらに、私がするとき

store.getAt(1).getData()

フィールド'id:"ext-record-2"'のみを含むオブジェクトを取得します。

store.findExact()を使用してレコードを取得できないのはなぜですか?また、record.get('column')が未定義を返すのはなぜですか?

ここに画像の説明を入力してください

4

1 に答える 1

0

問題が見つかりました...

ExtJSとSenchaTouchのアプリケーション間でモデルを再利用しようとしていました。Sencha Touchは、「フィールド」が「config」内で定義されることを期待していますが、ExtJSはそうではありません。

ExtJS:

Ext.define('MyModel', {
  extend: 'Ext.data.Model',
  fields: [
    {name: 'Symbol',    type: 'string'},
    {name: 'LastPrice', type: 'float'},
    {name: 'Bid',       type: 'float'},
    {name: 'Ask',       type: 'float'},
    {name: 'Volume',    type: 'int'},
    {name: 'Close',     type: 'float'}
  ]
});

Sencha Touch:

Ext.define('MyModel', {
  extend: 'Ext.data.Model',
  config: {
    fields: [
      {name: 'Symbol',    type: 'string'},
      {name: 'LastPrice', type: 'float'},
      {name: 'Bid',       type: 'float'},
      {name: 'Ask',       type: 'float'},
      {name: 'Volume',    type: 'int'},
      {name: 'Close',     type: 'float'}
    ]
  }
});

回避策:

var myModelConfig = {
  extend: 'Ext.data.Model',
  config: {
    fields: [
      {name: 'Symbol',    type: 'string'},
      {name: 'LastPrice', type: 'float'},
      {name: 'Bid',       type: 'float'},
      {name: 'Ask',       type: 'float'},
      {name: 'Volume',    type: 'int'},
      {name: 'Close',     type: 'float'}
    ]
  }
};
myModelConfig.fields = myModelConfig.config.fields;
Ext.define('MyModel', myModelConfig);
于 2013-01-08T22:27:45.437 に答える