Extjs问题与动态绑定组合的readOnly属性

时间:2018-09-14 23:53:26

标签: javascript extjs extjs6 extjs6-classic

我有一个带有combobox的小部件,需要的流程是这样的,

  1. 首先禁用组合。

  2. 每行都有编辑图标,当我单击“编辑”时,仅应启用该特定组合。

  3. 然后当我保存记录时,应再次禁用已启用的组合。

第3步对我不起作用。

{
    text: 'TC',
    dataIndex: 'scrTC',
    xtype: 'widgetcolumn',
    widget: {
        xtype: 'combo',
        store: 'TCStore',
        valueField: 'value',
        displayField: 'displayValue',
        matchFieldWidth: false,
        bind: {
            readOnly: {
                isReadOnly
            }
        }
    }
}

我也尝试过onwidgetattach方法,但是保存后该方法未调用,因此无法正常工作。

onWidgetAttach: function(column, widget, record) {
    if (condition) {
        widget.setReadOnly(false);
    } else {
        widget.setReadOnly(true);
    }
}

有人有主意吗?

编辑2:

我已经在叶子记录中动态插入了readOnly:true。

在视图模型中创建一个isReadOnly函数,

Ext.define('MainViewModel', {
    extend: 'Ext.app.ViewModel',
    alias: 'viewmodel.main',
    data: {
        isReadOnly: function (record) {
            return record.get('readOnly');
        }
    }
});

在treeGrid中,

{
        text: 'TC',
        dataIndex: 'scrTC',
        xtype: 'widgetcolumn',
        widget: {
            xtype: 'combo',
            store: 'TCStore',
            valueField: 'value',
            displayField: 'displayValue',
            matchFieldWidth: false,
            bind: {
                readOnly: '{isReadOnly}'
            }
        }
    }

在第一次加载时,组合框按预期方式是readOnly,但是当我单击行中的编辑按钮时,它会在下面创建一个新行,并且我已设置readOnly = false。但组合框仍未绑定为readOnly false n,从而使其可编辑。

0 个答案:

没有答案