のようなモデルを作成しました。
Ext.define('MyApp.model.ContainerDetailsModel', {
extend: 'Ext.data.Model',
alias: 'model.ContainerDetailsModel',
config: {
fields: [
{
name: 'id',
allowNull: false,
type: 'string'
},
{
name: 'container_types_id',
type: 'string'
}
]
}
});
そしてこんなお店
Ext.define('MyApp.store.ContainerDetailsStore', {
extend: 'Ext.data.Store',
requires: [
'MyApp.model.ContainerDetailsModel'
],
config: {
model: 'MyApp.model.ContainerDetailsModel',
storeId: 'ContainerDetailsStore',
proxy: {
type: 'ajax',
enablePagingParams: false,
url: 'hereIsServiceUrl',
reader: {
type: 'json'
}
}
}
});
アプリケーションのどこかで、次のような 1 つのレコードを取得しようとしました。
var detailsStore = Ext.getStore("ContainerDetailsStore");
detailsStore.load();
var detailsRecord = detailsStore.last();
しかし、それは私に未定義を与えました。サービスによって返された json は問題ありません。別の場所でリストのソースとして使用します。allowNull を true に変更しようとしましたが、ソースに null id がありません。タイプを「int」に設定してみましたが、結果は同じでした。
だから私は試しました
console.log(detailsStore);
結果は次のようになります (重要な値のみ):
Class {
...
loaded: true,
data: Class {
...
all: Array[1] {
length: 1,
0: Class {
container_types_id: "1",
id: "726",
....
}
...
}
...
},
...
}
同じ場所で
console.log(detailsStore.data);
戻り値(そうあるべきです):
Class {
...
all: Array[1] {
length: 1,
0: Class {
container_types_id: "1",
id: "726",
....
}
...
}
しかし(次の行)
console.log(detailsStore.data.all);
戻り値
[]
そして、それは空の配列です。ストアからメソッドを試すと、ストアが空であると表示されます。console.log() 行を次々と書いたので、それらの間で変更されないことを確認してください(異なる順序または組み合わせでも試しています)。
私のブラウザは Google Chrome 23.0.1271.97 m https://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/sencha-touch-all-debug.jsの Sencha を使用しています
どうすればその店からレコードを入手できますか?