4
form= new Ext.FormPanel({ 
    renderTo: Ext.query(".foo")[0], 
    items:[]

});

firebug HTML コードでは:

<div class="foo" id="ext-gen1008">
<div id="form-1014" class="x-panel x-panel-default" role="form" style="width: 1024px; height: 2px;">
<div id="form-1014-body" class="x-panel-body x-panel-body-default x-panel-body-default" style="left: 0px; top: 0px;">
<div class="x-clear" role="presentation" id="ext-gen1011"></div>
</div>
</div>
</div>

フォームタグはどこにありますか? または、フォームタグがなく、このフォームは Ajax によって送信されますか?

4

1 に答える 1

4

html を気にする必要はありません。ExtJS は、これらの処理を行う JavaScript フレームワークです。(タグに依存するコードを書くべきではありませんか? 将来のリリースでは、sencha はそれを変更する可能性があり、そうする場合はコードを書き直し/更新する必要があります。)

フォームに url パラメータを指定すると、フォームを呼び出し.submit()て値を送信できます。

ここにドキュメントの例があります

ドキュメントの例:

Ext.create('Ext.form.Panel', {
    title: 'Simple Form',
    bodyPadding: 5,
    width: 350,

    // The form will submit an AJAX request to this URL when submitted
    url: 'save-form.php',

    // Fields will be arranged vertically, stretched to full width
    layout: 'anchor',
    defaults: {
        anchor: '100%'
    },

    // The fields
    defaultType: 'textfield',
    items: [{
        fieldLabel: 'First Name',
        name: 'first',
        allowBlank: false
    },{
        fieldLabel: 'Last Name',
        name: 'last',
        allowBlank: false
    }],

    // Reset and Submit buttons
    buttons: [{
        text: 'Reset',
        handler: function() {
            this.up('form').getForm().reset();
        }
    }, {
        text: 'Submit',
        formBind: true, //only enabled once the form is valid
        disabled: true,
        handler: function() {
            var form = this.up('form').getForm();
            if (form.isValid()) {
                form.submit({
                    success: function(form, action) {
                       Ext.Msg.alert('Success', action.result.msg);
                    },
                    failure: function(form, action) {
                        Ext.Msg.alert('Failed', action.result.msg);
                    }
                });
            }
        }
    }],
    renderTo: Ext.getBody()
});

無関係ですが役に立ちます。Ext 4.x より前はnewキーワードを使用して新しいコンポーネントを作成していましたが、現在は を使用することをお勧めしますExt.create。の代わりにnowExt.extendを使用Ext.defineし、extend パラメータを追加します。

アップグレードガイド

于 2013-08-21T12:29:20.277 に答える