1

我在我的应用程序中使用extjs-6。我有一个组合框。这个组合可以有 3 个值。如果用户选择value1value2,必须注册两个textfield,但如果他选择value3,他必须注册三个textfield

我知道 extjs-6 有一个reference配置,我可以使用如下:

Ext.create('Ext.panel.Panel', {
    title: 'Sign Up',

    viewModel: {
        type: 'test'
    },

    items: [{
        xtype: 'checkbox',
        boxLabel: 'Is Admin',
        reference: 'isAdmin'
    },{
        xtype: 'textfield',
        fieldLabel: 'Admin Key',
        bind: {
            disabled: '{!isAdmin.checked}'
        }
    }]
});

我该如何实现呢?
注意:这些textfields(需要两个主题value1, vlaue1和三个主题value3)。

4

1 回答 1

3

在我的示例中,我将根据组合框的选定记录禁用文本字段。有两种(甚至更多)方法可以做到这一点。

  1. 您可以使用此绑定记录绑定组合的选定记录并设置文本字段(或任何可绑定配置)的“禁用”。

  2. 您可以使用公式并根据您返回 true 或 false(或所选记录的另一个属性)的组合的选定值来设置文本字段的“禁用”。

在视图的声明中绑定选中的记录(不使用viewmodel)

要将所选记录绑定到属性,请将其添加到您的组合配置中:

{
    xtype: 'combo',
    bind: {
        selection: '{selectedRecord}'
    }
}

现在您可以使用该属性来设置禁用。将此添加到文本字段的配置中:

{
    xtype: 'textfield',
    bind: {
        disabled: '{!selectedRecord.value}'
    }
}

在这里您可以找到一个工作示例:https ://fiddle.sencha.com/#fiddle/tec

使用公式并返回值(基于所选记录)进行绑定

要获取组合的选定记录,请创建一个使用其参考配置绑定到组合的公式:

formulas: {
     disableTextField: {
         bind: {
             bindTo: '{data2.selection}',
             deep: true
         },
         get: function(record) {
             return record ? record.id !== 3 : true;
         }
    }
 }

现在将“disableTextField”的返回值绑定到文本字段的所需属性:

{
    xtype: 'combo',
    reference: 'data2'
}, {
    xtype: 'textfield',
    bind: {
        disabled: '{disableTextField}'
    }
}

在这里您可以找到一个工作示例:https ://fiddle.sencha.com/#fiddle/te8

于 2015-09-06T13:42:14.533 回答