私はSenchatouch2を使用しています。既存のjsオブジェクトからのロードを保存しています:
Ext.define('majestic.store.Dataset', {
extend : 'Ext.data.Store',
requires : [
'majestic.model.Dataset',
'majestic.util.config.ConfigurationManager'
],
config : {
model : 'majestic.model.Dataset',
type: 'memory',
reader: 'json',
autoLoad : true,
proxy: {
type: 'memory',
reader: {
type: 'json',
rootProperty : 'datasets'
}
}
},
constructor: function(config) {
this.callParent(arguments);
this.applyData(majestic.util.config.ConfigurationManager.getConfig());
}
});
モデル:
Ext.define('majestic.model.Dataset', {
extend : 'Ext.data.Model',
config : {
fields : [
'title'
],
associations: [
{type: 'hasMany', model: 'Layer', name: 'layers'}
]
}
});
そして表示:
Ext.define('majestic.view.LayerList', {
requires: ['majestic.store.Dataset'],
extend: 'Ext.dataview.List',
config:{
store: 'Dataset',
itemTpl: '<div>{id} is {title}</div>',
itemSelector: "div"
}
});
Sencha touchでデータビューを見た後、autoLoadとitemSelectorを追加しましたが、まだ運がありません。
走っているのに
new majestic.store.Dataset().each(function(i) {console.log(i)});
データ属性が入力されたオブジェクトのリストを出力します。
アップデート
私は@fbrandelに同意します。最初のオプションはそれがどのように機能するかですが、STソースを読んだ後、dataviewのストアパラメーターは次のように解釈されることがわかりました。
- ストアオブジェクト
- ここの最初の例のようなjsonストア表記
- StoreManager.lookupを使用して解決できる作成済みストアの名前
だから私は結局:
store:'Dataset'
ビューに残します- ストアに追加
storeId : "Dataset"
するため、StoreManagerで解決できます - これを追加すると、StoreManager
stores: ['Dataset']
が作成されて登録されます。majestic.store.Dataset
PSthis.setStore(new majestic.store.Dataset())
これはGridViewのメソッドを使用して行うこともできますが、可能なinitialization
場合は宣言型の方法を好みます