Extjs6.5中的Dynamic Combobox无法正常工作

时间:2017-09-29 03:25:41

标签: extjs

我尝试创建一个组合框(带有autoCompleted)和一个远程存储。当用户在组合框中键入一些字母时,它会进入服务器以获取新的数据存储区。 我的组合框中什么都没有。我的代码出了什么问题?我该怎么做?

这是我的组合框:

Ext.define('HDDTest.view.mod.searchDetails', {
    extend: 'Ext.Panel',
    controller: 'home',
    items: [
        {
            xtype: 'combobox',
            width: 450,
            id: 'createRelatedConceptComboBox',
            name: 'createRelatedConceptComboBox',
            fieldLabel: 'Test',
            //hideTrigger:true,
            valueField: 'text',
            emptyText: 'Select Concept',
            typeAhead: true,
            typeAheadDelay: 350,
            minChars: 1,
            listeners: {
                change: 'onRelatedConceptComboBoxClicked'
            },
            store: {
                type: 'GetRelatedConceptStore'
            }
        }
    ]
});

这是我的控制器:

Ext.define('HDDTest.controller.main.HomeController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.home',

    onRelatedConceptComboBoxClicked: function (constructors, text) {
        var getRelatedConceptStore = Ext.create('HDDTest.store.GetRelatedConceptStore');
        getRelatedConceptStore.load({
            params: {
                sValue: 'text'
            },
            callback: function (records, success) {
            },
            scope: this
        });
    }
});

这是我的商店:

Ext.define('HDDTest.store.GetRelatedConceptStore', {
    extend: 'Ext.data.Store',

    field: ['value', 'text'],
    alias: 'store.GetRelatedConceptStore',
    storeId: 'GetRelatedConceptStore',
    autoSync: true,
    autoLoad: true,
    proxy: {
        type: 'ajax',
        url: "http://127.0.0.1/api/TSGH/GetAllSearchResults",
        method: 'GET',
        reader: {
            type: 'json',
            rootProperty: '',
            transform: function (records) {
                var data = new Array();
                for (var i = 0; i < records.length; i++) {
                    data[i] = new Array();
                    data[i][0] = records[i].NCID;
                    data[i][1] = records[i].DEFAULT_NAME + '(' + records[i].NCID + ')';
                }
                console.log(data);
                return data;
            }
        }
    }
});

当我在组合框中输入一些字母时,我的控制台窗口中没有任何错误信息。我怎么能这样做? 提前谢谢,Ben

1 个答案:

答案 0 :(得分:0)

处理 transform()方法或 displayField 属性的模型字段名称时似乎存在一些错误。

Here是注释掉 transform()方法的工作代码。