javascript - 将文本字段更改为文本区域字段

标签 javascript extjs extjs6 extjs6-modern extjs6.2

我需要根据条件将 xtype 从 textfield 更改为 textareafield。 我需要做这样的事情,但我无法更新 xtype

    Ext.define('app',{
    launch: function(){
        var i = 1;
        if (i == 1) {
           Ext.getCmp('myID').updateXtype('textareafield')
        }
    },
    items:[{
          xtype: 'fieldset',
          title: 'title'
        },
       items: [{
          xtype: 'textfield',
          label: 'label'
        }]]
        })

或者我可以使用 View 模型,但 xtype 不可绑定(bind)

Ext.define('app',{
        launch: function(){
            var i = 1;
            if (i == 1) {
              this.getViewModel().set('newXtype', 'textareafield');
           }
          },
          items:[{
                xtype: 'fieldset',
                title: 'title'
              },
             items: [{
                xtype: 'textfield',
                label: 'label',
                bind: {
                xtype: '{newXtype}'
                }
              }]]
              })

最佳答案

确切地说:您不能以这种方式绑定(bind) xtype。在这种情况下,我会使用 hidden 绑定(bind)。您将使用 textfield textareafield 构建表单。然后根据您的用例(条件)切换隐藏绑定(bind)。

https://fiddle.sencha.com/#view/editor&fiddle/2trf

Ext.create('Ext.form.Panel', {
    title: 'Switch between textfield and textareafield',
    width: 360,
    bodyPadding: 10,
    renderTo: Ext.getBody(),
    viewModel: {
        data: {
            showTextfield: true
        }
    },
    defaults: {labelWidth: 120},
    tbar: [{
        text: 'Switch',
        handler: function(button) {
            let vm = this.up('panel').getViewModel();
            let showTextfield = vm.get('showTextfield');

            vm.set('showTextfield', !showTextfield)
        }
    }],
    items: [{
        xtype: 'textfield',
        fieldLabel: 'TEXTFIELD',
        bind: { hidden: '{showTextfield}'}
    },{
        xtype: 'textareafield',
        fieldLabel: 'TEXTAREAFIELD',
        bind: { hidden: '{!showTextfield}'}
    }]
});

关于javascript - 将文本字段更改为文本区域字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57058462/

相关文章:

javascript - concat()、 "="和 "+="之间有区别吗

javascript - 无法在 morris.js 中显示 xlabel

javascript - 打开包含 ExtJS 网格的浏览器弹出窗口的最佳方式

java - Extjs 6 + Spring 休息 : Empty response for 401 error

javascript - Extjs 6-过滤网格

javascript - 如何根据用户extjs更改scss变量值

javascript - 如何将 Promise.all().then 返回给函数

javascript - 检测文本中的超链接 - jQuery

Extjs 4.1 datefield - 设置本周的第一天和最后一天

node.js - express.session() 在服务器上解析/更改 session