0

窓があります。そのウィンドウには、ストアのあるコンボボックスが 1 つあります。ストアがデータのロードを完了するまでウィンドウをマスクしたい。これは、ロード前にストアに this.setLoading(true) を記述し、ロードに this.setLoading(false) を記述することで実現できます。

しかし、上記のアプローチを使用していると、コンボトリガーをクリックした後にマスクが表示されます。これは、トリガーをクリックした後にストアがロードされていることを意味します。その代わりに、ウィンドウの初期化中にストアをロードしたい

どうすればこれを達成できますか?

4

2 に答える 2

1

最も簡単な方法は、queryMode「local」に設定し、triggerAction「query」に設定することです。これは、ストアフィルターをクリアすることすらできなくなります。ただし、クエリが中止された場合でも、 beforequeryイベントは引き続き発生することに注意してください。

ここに設定例があります:

Ext.create('Ext.form.ComboBox', {
    fieldLabel: 'Choose',
    store: myStore,
    queryMode: 'local',
    triggerAction: 'query',
    displayField: 'name',
    valueField: 'id'
});
于 2012-11-20T06:43:49.533 に答える
0

それは正常な動作です。トリガーをクリックすると、ストアが読み込まれます。beforeloadストア イベントを処理することで、ロードをキャンセルできます。次のようなものを作成できます。

var form = this.getForm();
var store = this.getStore();

store.load({ 
    callback: function(records, operation, success) {
        form.show();
    }
});

store.on('beforeload', function() {return false; })
于 2012-11-20T06:45:30.663 に答える