You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

1.3 KiB

disabled的父子控制

绝大多数时候,我们皆认同父组件设置disabled:true之后所有子组件都会被disabled

const widget = {
    type: "a",
    disabled: true,
    items: [
        {
            type: "b"
        }
    ]
};

但是存在一种场景,有没有可能父组件disabled:true,但是某个子组件要可用呢disabled:false

由于组件默认的disabled属性就是false,所以没办法通过props控制,有一种方式是在mounted中重新setEnable(true)

const widget = {
    type: "a",
    disabled: true,
    items: [
        {
            type: "b"
        }, {
            type: "b",
            mounted: function () {
                this.setEnable(true);
            },
        }
    ]
};

disabled控制还有一个特性,当使用者手动控制disabled状态后,会对组件添加一个_manualSetEnable标记,之后该组件将不再受父组件的setEnable控制

手动控制disabled状态指设置dsiabled:true和手动调用setEnable方法

const widget = {
    type: "a",
    items: [
        {
            type: "b"
        }, {
            type: "b",
            disabled: true,
        }
    ],
    mounted: function () {
        //  对父组件操作无法再控制到子组件b了
        this.setEnable(true);
    }
};