2

ExtJS4.0.1、MVCアーキテクチャを使用してコードを記述します。そして、メインフォームを開発すると、Webサイトの検索拡張機能で問題が発生します。

コントローラで新しいウィジェットを作成しようとしたときに、サブパネルで結果をレンダリングする必要があります。したがって、サンプルコードを作成すると、次の問題が発生します。

**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

サポートされていない xtype を Ext.grid.Panel 列に含めたときに、同じエラーが発生しました。問題を解決した xtype を削除する必要がありました。

于 2013-02-20T09:55:10.757 に答える