1

GeoExt Map App で CSV ファイルのアップロードを作成しようとしています。アップロード機能を Ext.Action 内に配置して、GeoExt パネルのツールバーに追加できるようにする必要があります。この例を実装しようとしています。ここに私のコードがあります、

    action = new Ext.Action({
    text: "Upload Excel",
    control: Ext.create('Ext.form.Panel', {
        title: 'Upload a CSV File',
        width: 400,
        bodyPadding: 10,
        frame: true,
        renderTo: Ext.getBody(),
        items: [{
            xtype: 'filefield',
            name: 'csv',
            fieldLabel: 'CSV Upload',
            labelWidth: 50,
            msgTarget: 'side',
            allowBlank: false,
            buttonText: 'Select CSV File'
        }],

        buttons: [{
            text: 'Upload',
            handler: function () {
                var form = this.up('form')
                    .getForm();
                if (form.isValid()) {
                    form.submit({
                        url: 'file-upload.py',
                        waitMsg: 'Uploading the CSV File...',
                        success: function (fp, o) {
                            Ext.Msg.alert('Success', 'Your csv file "' + o.result.file + '" has been uploaded.');
                        }
                    });
                }
            }
        }]
    }),
    map: map,
    // button options
    tooltip: "Upload CSV File",
    // check item options
    group: "newTool"
});
actions["upCSV"] = action;
toolbarItems.push(new Ext.button.Button(action));

Firebug は私にこのエラーを出し続けます。

TypeError: b[d.xtype || e] is not a constructor

Ext.Action 内で関数を正しく宣言していませんか?

4

1 に答える 1

1

anは の型ではないため、actionを a に直接プッシュすることはできません。Anは基本的に、複数回再利用できる抽象化レイヤーを作成する手段です。ここでは、次のことを行う必要があります。toolbarExt.ActionExt.ComponentExt.Action

toolbarItems.push(new Ext.button.Button(action));

ドキュメントから:

アクションを使用すると、アクション インターフェイスをサポートするすべてのコンポーネント (主に Ext.toolbar.Toolbar、Ext.button.Button、および Ext.menu.Menu コンポーネント) 間でハンドラー、構成オプション、および UI の更新を共有できます。

于 2012-09-25T04:47:18.947 に答える