0

フォームにフィールドを動的に追加するためのアイテムとボタン「追加」を含むフォームがあります(最初のフィールドを複製します)。これを行うためにボタンにリンクする関数は次のとおりです。私のコードは次のとおりです。

     var form new Ext.form.FormPanel({
            items           : [{
                xtype: 'fieldcontainer',
                combineErrors: true,
                msgTarget : 'side',
                layout: 'hbox',
                items: [{
                    xtype       : 'displayfield',
                    margin      : '0 10 0 0'
                },{
                    xtype       : 'button',
                    text        : 'select'
                }]
            }]
            ,buttons: [{
              text    : 'Add field'
            }]
        })
4

1 に答える 1

0

ボタンにクリック機能を定義する必要があると思います(またはボタンにitemIdを与えて、フォームオブジェクトアイテム配列にアクセスし、動的な「フィールドコンテナ」オブジェクトをフォームに追加できるコントローラーで関数を定義します。以下のスニペットを参照してください:

ビューで:

,buttons: [{
          text    : 'Add field',
          itemId : 'addField'
        }

コントローラーで:

refs : [{
    selector : 'viewport form',
    ref : 'myForm'
},
init : function(){
    this.control({
        '#addField':{
            click : this.addFieldContainer
        }
        });

},

addFieldContainer: function(){
var form = this.getMyForm();
form.items.push({
            xtype: 'fieldcontainer',
            combineErrors: true,
            msgTarget : 'side',
            layout: 'hbox',
            items: [{
                xtype       : 'displayfield',
                margin      : '0 10 0 0'
            },{
                xtype       : 'button',
                text        : 'select'
            }]
        });

}

お役に立てれば。

于 2016-02-01T16:47:10.880 に答える