-2
2つのストアがあります。私は2番目のストアのコンストラクタの1番目のストアからのデータが必要です。どのようにそれを行うことができますか?ExtJS 6.第2ストアコンストラクタの第1ストアのデータを使用
2つのストアがあります。私は2番目のストアのコンストラクタの1番目のストアからのデータが必要です。どのようにそれを行うことができますか?ExtJS 6.第2ストアコンストラクタの第1ストアのデータを使用
これはむしろ簡単ですが、役に立たないでしょう。
store2のload()イベントからstore2を作成し、そのloadイベントの前にストアを任意のコンポーネントにバインドする必要があります。
Ext.define('MyApp.store.Store1',{
...
listeners:{
load:function(store, records) {
var store2 = Ext.getStore("store2") || Ext.create('MyApp.store.Store2',{
store1data: records
});
Ext.getCmp("someCombobox").bindStore(store2); // you would have to use ext-empty-store on the combobox before, or else it may trigger store creation too early
}
しかし、これは良いプログラミングスタイルでも、実際の目的にも役立ちません。通常は、store1が新しいデータを取得するたびにstore2の関数を呼び出すことをお勧めします。 reconfigure
または他のストアメソッドを使用して後で行うことができない、店舗建設中に行う必要はほとんどありません。 (注目すべき例外は、配列ストアでもjsonストアでもツリーストアでも構いません)。
だから例えば、あなたはstore2上のメソッドを定義し、store1がリロードされた直後ことを呼び出すことができます。
store2.someFunction = function(store1Records) {
var store2 = this;
Ext.each(store1Records,function(record) {
store2.getProxy().setExtraParam(record.get("paramName"),record.get("paramValue"));
});
store2.load();
}
store1.on('load',function(store, records) {
store2.someFunction(records);
});
は、なぜあなたは単に 'store2.loadDataを()'を使用することはできませんか?単純な 'store2.loadData(store1.getRange())'はうまくいくはずです。 – ASP
私は試したが、それは助けにはならない。何らかの形でデータはすべてのコンストラクタの後にのみロードされます。私が1st店を同期させたとしても。 – anastsiacrs
ワークフローのアイデアを得るには、実際にコードを投稿する必要があります。現在のところ、あなたのワークフローはうまくいかないと思う。ストアコンストラクターにデータを提供する必要はありません。編集:または、あなたは彼がコンストラクタを意味するのではなく、設定オブジェクト。ここをクリックしてください:http://docs.sencha.com/extjs/6.0/6.0.2-classic/#!/api/Ext.data.Store – ASP