サーバーからのJsonの応答に応じてビューを動的にロードするSenchaTouch2を使用してモバイルアプリケーションを作成しています。
これは、ビューをロードする前に、いくつかの一般的な要素を使用してビューを構成する必要があることを意味します。たとえば、リストビューに対応するサーバーからJson文字列を受け取った場合、リストアイテム(名前、URL、説明)にストアとプロキシを動的に入力する必要があります。
これは機能しますが、そのリストからいくつかの項目を選択して別のリストをロードしたいのですが、今回はプロキシを変更したいと思います。私の新しいプロキシは、選択したアイテムのurlフィールドです。選択したアイテムからURLフィールドを取得してプロキシを変更しましたが、これにより問題が発生します。
Ext.navigation.Viewを使用していますが、ナビゲーション履歴を保持したいと思います。上記の場合、ナビゲーション履歴に戻ると、最初のリストの項目が最後のリストの項目に変わります。
それぞれの独立したデータに応じてビューの動的なロードを実現し、MVC-Storeパターンとナビゲーション履歴を常に維持するためのワークフローを探しています。
これはリストアイテムの私のモデルです:
Ext.define('ExampleApp.model.ListItem', {
extend: 'Ext.data.Model',
config: {
fields: ['name', 'url', 'descriprion']
}
}
これはリストのストアです:
Ext.define('ExampleApp.store.ListItems', {
extend: 'Ext.data.Store',
config: {
autoLoad: false,
model: 'ExampleApp.model.ListItem',
proxy: {
type: 'jsonp'
url: 'http://mydomain.com/myjsonresponse',
reader: {
type: 'json',
useSimpleAccessors: true
}
}
}
})
これは私の見解です:
Ext.define('ExampleApp.view.MyList', {
extend: 'Ext.List',
xtype: 'mylist',
requires: ['ExampleApp.store.ListItems'],
config: {
title: 'My List',
itemTpl: '{name} - {description}',
store: 'ListItems'
}
})
これは私のリストのitemtapイベントで呼び出される関数です:
listItemTapped: function (view, index, target, record, event) {
var listItems = Ext.getStore('ListItems');
listItems.getProxy().setUrl(record.get('url'));
listItems.load();
this.getMain().push({
xtype: mylist
});
}