通过Direct Store加载ExtJS 4 MVC ComboBox - 如何在点击combox box时防止加载?

Sco*_*ter 3 model-view-controller combobox extjs store

我在视图中有一个组合框,它与使用Ext.Direct加载下拉数据的数据存储/模型相关联.

在我打开包含组合框的视图的控制器中,我启动了商店的负载.

这一切都有效,但是当我点击组合框时,它会启动另一个加载(用加载掩盖屏幕)并重新加载商店.我需要防止第二次加载,因为它已经加载了.

商店:

Ext.define('ESDB.store.Employees', {
    extend: 'Ext.data.Store',
    model: 'ESDB.model.Employee',
    autoLoad:false,
    proxy: {
        type: 'direct',
        api: {
            create  : undefined,
            read    : EmployeeService.getRecords,
            update  : EmployeeService.setRecord,
            destroy : undefined
        }

    }
});
Run Code Online (Sandbox Code Playgroud)

模型:

Ext.define('ESDB.model.Employee', {
    extend: 'Ext.data.Model',
    fields: ['id','name','login','pw','domain','lastLogin','addedDate','active','ulevel','staffID']
});
Run Code Online (Sandbox Code Playgroud)

视图:

(相关部分 - 组合框 - 视图中没有其他对商店或模型的引用)

this.items = [
                {
                xtype: 'form',
                items: [
{
                        xtype: 'combobox',
                        name : 'callTakenBy',
                        fieldLabel: 'Taken By',
                        displayField: 'name',
                        queryMode: 'remote',
                        valueField: 'id',
                        store: "Employees",
                        editable: false
                    }
]]}
Run Code Online (Sandbox Code Playgroud)

控制器(当他们双击网格中的一行时,它会启动员工商店的负载,然后打开视图):

encounterRowClicked: function(grid, record) {
            console.log('Double clicked on ' + record.get('id'));

            var store = this.getEmployeesStore();
                store.load({
                    params: {
                    },
                    callback: function(r,options,success) {  } //callback
                }); //store.load


            // load the view:

            var view = Ext.widget('encounteredit');
            view.down('form').loadRecord(record);

        }
Run Code Online (Sandbox Code Playgroud)

所有这些代码都可以工作,但是当我进入视图时,组合框正确显示其中一个加载的值,我点击组合框然后开始另一个加载的商店.它工作,但我必须再次点击实际选择一个不同的值.所以我正在寻找一种方法来告诉组合框只是使用商店,而不是加载它 - 似乎应该已经知道它已加载并只是使用它?

nsc*_*rob 6

您需要设置queryMode : 'local'组合框.正如您在文档中看到的那样,默认值是远程的(顺便说一下,您应该删除模式:'remote',模式不是组合框的有效配置).

在queryMode:'remote'中,ComboBox根据用户交互动态加载其Store.

您应该使用'local',因为您已在商店中拥有localy数据