2

T 编写代码使用 ExtJS4.0.1,MVC 架构。当我开发主表单时,我遇到了网站搜索扩展的问题。

当我试图在控制器中创建新的小部件时,我需要在子面板中渲染结果。因此,当我编写示例代码时,我遇到了以下问题:

**Uncaught TypeError: Object [object Object] has no method 'setSortState'**

我不明白为什么它会给出该错误消息。我需要一些帮助来解决这个问题。

下面我想显示我的代码:

//Panel which is showing to user

    Ext.define('Semantics.view.main.menuView', {
        extend: 'Ext.panel.Panel',
        layout: 'fit',
        alias: 'widget.Menu',
        title: "",
        tbar: [
            {
//search field
                        name:'mainSearchText',
                        id:'mainSearchText',
                        xtype: 'textfield',
                        defaultValue: 'Search',
                        height: 20
            },
            {
                name:'mainSearchButton',
                id:'mainSearchButton',
                xtype: 'button',
                text: 'Find',
                height: 20
            }
        ]
    });


//controller for search request
    Ext.define('Semantics.controller.main.mainController', {
        extend: 'Ext.app.Controller',
        views: ['main.menuView','mainSearch.MainSearchResultForm'],
        refs: [
            { ref: 'menuPanel', selector: 'Menu' },
            { ref:'mainSearchText',selector:'#mainSearchText'},
            {ref: 'mainSearchForm',selector:'#mainSearchForm'},
            {ref:'MainSearchGrid',selector:'#MainSearchGrid'}
        ],

        init: function () {
            this.control({
                'Menu': {
                    render: this.onPanelRendered
                },
                'Menu button[name="mainSearchButton"]': {
                    click: this.onButtonClick
                }
            });
        },
        onButtonClick: function (button) {
            var me = this;
            if(button.name=="mainSearchButton") {

                        var mtextFiled = me.getMainSearchText().getValue();

                        console.log(mtextFiled);
                        Ext.Ajax.request({
                            scope: this,
                            url: 'app/mainSearchT/findText/',
                            method: 'POST',
                            params: {
                                text: me.getMainSearchText().getValue()
                            },
                            success: function (result) {
                                mainPanel = me.getMenuPanel();
                                mainPanel.removeAll(true);
                                loadingMask = new Ext.LoadMask(mainPanel, { msg: "Loading" });
                                loadingMask.show();
                                var mname = 'MainSearchResultForm';
                                var start_info_panel = Ext.widget(mname);
                                mainPanel.items.add(start_info_panel);
                                loadingMask.hide();
                                mainPanel.doLayout(); //that line gives that error
                            },
                            failure: function (result) {
                                console.log(result);
                            }
                        });

            }
        },

        onPanelRendered: function () {
        }
    });
4

1 回答 1

5

当我在 Ext.grid.Panel 列中包含不受支持的 xtype 时,我遇到了同样的错误。我不得不删除 xtype,这解决了问题。

于 2013-02-20T09:55:10.757 回答