如何基于viewModel存储returnrd数据extjs禁用组件

时间:2017-08-29 18:38:53

标签: extjs extjs4 viewmodel extjs5 sencha-architect

我有两个组合框,我希望根据组合框A中的选定值禁用combox(b)(我应该查看它的存储数据查找记录,如果记录参数(arsubOpen)包含值1则只有我应该启用组合框B)。为此我添加了一个类似A的类似商店,并添加了一个过滤器来过滤仅包含arsubOpen 1的记录。现在我如何让它们根据这些商店记录启用它们。

Test fiddle

1 个答案:

答案 0 :(得分:0)

您可以收听change事件并将新值与您要启用第二个组合框的任何值进行比较:

 {
    xtype: 'combobox',
    anchor: '100%',
    displayField: 'description',
    valueField: 'adjustmentTypeId',
    fieldLabel: 'A',
    // lastQuery: '' to disable store loading a second time on trigger click
    lastQuery: '',
    bind: {
        store: '{a}'
    },
    listeners: {
        change: function( combo, value ) {
            // Logging a value to console - remove this code
            console.log( value );

            var store = combo.getStore();
            var record = store.findRecord(combo.valueField, value)
            var arsubOpen = record.get('arsubOpen');
            // Condition for enabling here
            var shouldEnable = arsubOpen === 1;

            var form = combo.up( 'form' );
            var basicForm = form.getForm();
            // 'bField' si the name of the B combobox field
            var bCombo = basicForm.findField( 'bField' );
            bCombo.setDisabled( !shouldEnable );
        }
    }
},
{
    xtype: 'combobox',
    anchor: '100%',
    // Field name to use for form submitting and finding the field
    name: 'bField',
    displayField: 'description',
    valueField: 'arOnlySubCategoryId',
    fieldLabel: 'B',
    // lastQuery: '' to disable store loading a second time on trigger click
    lastQuery: '',
    bind: {
        disabled: 'disableB',
        store: '{B}'
    }
}

基于您自己的processing recurring payments

我投入lastQuery: ''配置禁用商店第二次点击触发器,这可能非常烦人,花了我很多时间来找出解决方案。