私の MVC アプリケーションでは、次のように定義されたコントローラーがあります。
Ext.define('NE.controller.MyController', {
extend: 'Ext.app.Controller',
stores : [...'StoreAgents'..],
views: [ ...'MyView'...], // * alias w_view
init: function() {
this.control({
'w_view': {
render: function() { this.getStore('StoreAgents').load(); }
}
});
}
});
ビュー MyView には、次のように定義されたコンボボックスがあります。
{
xtype: 'combobox',
name : 'id_agent',
forceSelection: true,
fieldLabel: 'Agent',
store: 'StoreAgents',
queryMode: 'local',
displayField: 'name',
valueField: 'id'
}
ビューがレンダリングされるたびにコンボボックスリストが更新されると思いますが、間違っていますか? アプリケーションがすべてのエージェント データを正しく返すリクエストを (firebug を介して) 起動したことを確認しても、現在、コンボボックスにはオプションがありません。
さらに、別のコントローラによって管理されている別のビューをブラウズするたびに、別のコントローラが別の StoreAgent を宣言し、その load() メソッドを呼び出すことに気付きました。
私は何が欠けていますか?ありがとうございました
編集:
店舗が であることに気付きました{buffered: true}
。false に切り替えると、ストアは「datachange」イベントを発生させます。それ以外の場合はそうではありません。問題は、バッファリングが有効になっている場合、load() が「datachange」を起動しないのはなぜですか?