1

EXTJS MVC で新しいウィンドウを開こうとしています。このウィンドウは、データビューのアイコンをクリックすると開きます。firebug でウィンドウへの呼び出しを確認できますが、アプリケーションで空白の画面が表示されます。コードは次のとおりです。

Ext.define('App.view.Test', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.test',
    initComponent: function () {

        var msgTxt = GENHTML.msgTxtOpen + LANG.ADDCOURSEF1 + GENHTML.msgTxtClose2

        var required = '<span style="color:red;font-weight:bold" data-qtip="Required">*</span>';

        var test_form = {
            xtype: 'panel',
            itemId: 'TESTPANEL',
            width: 400

            cls: 'msg effect1',
            layout: 'form',
            border: false,
            items: [{
                xtype: 'panel',
                //cls : 'winTitle',
                html: msgTxt,
                border: 0
            }, {
                xtype: 'form',
                itemId: 'TESTFORM',
                buttons: [{
                    text: LANG.BTSUBMIT,
                    iconCls: 'icon-submit-tb',
                    iconAlign: 'right',
                    cls: 'tip-btn',
                    id: 'BTGENSUBMIT',
                    action: 'buttonAction'
                }],
                items: [{
                    xtype: 'container',
                    anchor: '100%',
                    layout: 'fit',
                    items: [{
                        xtype: 'container',
                        baseCls: 'x-plain',
                        bodyStyle: 'padding: 5px 0 5px 5px',
                        items: [{
                            xtype: 'displayfield',
                            value: LANG.EDITCOURSEFL1
                        }, {
                            xtype: 'displayfield',
                            value: '<div class = "spacer10"/>'
                        }, {
                            xtype: 'textfield',
                            itemId: 'title',
                            name: 'title',
                            allowBlank: false,
                            fieldLabel: LANG.CATALOGUEWINFL1,
                            afterLabelTextTpl: required,
                            vtypeText: LANG.GENVT

                        }]
                    }]
                }]

                var config = {
                    xtype: 'window',
                    title: 'Edit Courses',
                    layout: 'fit',
                    itemID: 'TESTWINDOW',
                    id: 'TESTWINDOW',
                    closable: true,
                    modal: true,
                    items: [test_form]
                }

                var holder = Ext.getCmp('center');
                holder.remove(0);
                holder.add(Ext.apply(config));

                this.callParent(arguments);
            }

コントローラー:

onTestViewSelectionChange: function (view, record, h, ind, evt) {

    var edit = evt.getTarget('a.icon-edit-32');
    if (edit != null) {

        var view = Ext.create('Campus.view.Test');
        view.show(record);
    }
}

ウィンドウを適切に作成したかどうか、ウィンドウを適切に呼び出しているかどうかはわかりません。私を案内してください。

4

1 に答える 1

1

コードにいくつかのエラーがあります:

最初はshowの使用です。私はあなたがそれをオーバーライドしたと思いますか?私は選択loadRecord()してそのまま残しますshow()

var view = Ext.create('Campus.view.Test');
view.show(record); 

2 番目は、ここでは何もしない呼び出しExt.apply()です。あなたは単にそれを必要としません。

holder.add(Ext.apply(config));

したがって、一部のロジックをビューに直接配置し、すべてをコントローラーに配置することは、あなたのケースでは完全に問題ないと思います。しかし、私はあなたのアプリのこの小さな部分しか知らないことに注意してください.

show()3 つ目は、デフォルトでは表示されないため、ウィンドウ インスタンスを呼び出す必要があることです。ただし、autoShowプロパティを次のように設定できますautoShow: true

id4つ目は、小道具を自分で設定するのは悪い習慣だということです. 可能であれば、それを行わずにExt.ComponentQueryを利用してください。

于 2012-11-22T12:26:37.967 に答える