使用viewmodel缓慢加载组合框项目

时间:2015-10-20 18:56:34

标签: javascript extjs combobox viewmodel extjs5

我的应用程序有一个带有三个组合框的表单。 组合框存储在ViewModel中。

 Ext.define('app.ComboboxsModel', {
 extend: 'Ext.app.ViewModel',
 alias: 'viewmodel.comboboxsmodel',
 stores: {
        storeA:{
            model:'AModel',
            autoLoad:true,
            actionMethods:{
                    read:'POST'
            },
            proxy: {
                type: 'ajax',
                url:  'php/url',
                reader:{
                    type:'json',
                    rootProperty: 'data',
                    successProperty: 'success'
                }
            }
        },

        storeB:{
            model:'BModel',
            autoLoad:true,
            actionMethods:{
                    read:'POST'
            },
            proxy: {
                type: 'ajax',
                url:  'php/url',
                reader:{
                    type:'json',
                    rootProperty: 'data',
                    successProperty: 'success'
                }
            }
        },

        storeC:{
            ...
        }
});

有效。数据被加载到组合框中。

问题是加载速度很慢。 上一个组合框的数据大约需要5秒才能加载。

如果不是在viewmodel中声明商店,而是将商店放在app store文件夹中,并在Apllication.js文件中引用它们按预期更快地工作。

但是,我打算使用ViewModel。

有没有办法加载 - 或在加载表单之前 - 使用viewmodel加载商店(组合框项目)?

编辑:

Comboboxs小提琴:https://fiddle.sencha.com/#fiddle/vqe

COMMENT:

更好地解释这个问题:

问题不在这个阶段,但是当我在网格中编辑记录并且我想以形式为comboboxs(config'name')的形式加载记录数据时。

如果将配置valudeField'name_id'替换为'name'加载速度更快,但仍然很慢。

但是,在服务器端(PHP),对于组合框,我最好使用id(主键)。

name: 'name', 
displayField: 'name', 
valueField: 'name_id', 

0 个答案:

没有答案