Показать поле на основе другого в JointJS

У меня есть инспектор, который содержит список объектов, имя и тип, а также мои пользовательские данные. Допустим, я хочу отобразить свою базу данных на выбор типа атрибута. Я могу сделать это с помощью "когда", но это только в том случае, если это простое поле с определенным путем, например, "attr/type". Поскольку он находится в списке, индекс меняется, поэтому я не знаю, как указать путь, чтобы проверить, какой тип выбран. Есть идеи по этой проблеме?

    data: {
                        type : 'list',
                        item: {
                            type: 'object',
                            properties: {
                                'name' : {
                                    type : 'text',
                                    group : 'text',
                                    label : 'Name',
                                    index : 1
                                },
                                type : {
                                    type : 'select',
                                    group : 'text',
                                            label : 'Type',
                                            options: ['Text','Number','Date','Select','Text Area'],
                                    index : 2
                                },
                                required : {
                                    type : 'toggle',
                                    group : 'validation',
                                    label : 'Required',
                                    index : 3
                                },
                                'min-length' : {
                                    type : 'number',
                                    group : 'validation',
                                    min : 0,
                                    label : 'Min Length',
                                    index : 4
                                },
                                'max-length' : {
                                    type : 'number',
                                    group : 'validation',
                                    min : 1,
                                    label : 'Max Length',
                                    index : 5
                                },
                                'min' : {
                                    type : 'number',
                                    group : 'validation',
                                    min : 0,
                                    label : 'Min',
                                    index : 6
                                },
                                'max' : {
                                    type : 'number',
                                    group : 'validation',
                                    min : 1,
                                    label : 'Max',
                                    index : 7
                                },
                                'message' : {
                                    type : 'text',
                                    group : 'validation',
                                    label : 'Error message',
                                    index : 8
                                },
                                'regex' : {
                                    type : 'text',
                                    group : 'validation',
                                    label : 'Regex',
                                    index : 9
                                },
                                'options' : {
                                    type : 'list',
                                    item : {
                                        type:'object',
                                        properties: {
                                            'text' : {
                                                type : 'text',
                                                label : 'Text',
                                                index : 1
                                            },
                                            'value' :{
                                                type : 'text',
                                                label : 'Value',
                                                index : 2
                                            }
                                        }
                                    },
                                    group : 'validation',
                                    label : 'Options',
                                    index : 10
                                }

                            }
                        },
                        group : 'validation',
                        label : 'Input',
                        index : 1
                    }

2 ответа

Боюсь, вам нужно создать поле для каждого типа из коллекции name / type. Подобная проблема решается здесь:

operator: {
                type: 'select',
                options: ['over', 'in', 'out', 'atop', 'xor', 'arithmetic'],
            },
            k1: {
                type: 'number',
                when: { eq: { operator: 'or' } }
            },
            k2: {
                type: 'number',
                when: { eq: { operator: 'arithmetic' } }
            },
            k3: {
                type: 'number',
                when: { eq: { operator: 'xor' } }
            },
            k4: {
                type: 'number',
                when: { eq: { operator: 'over' } }
            }

РЕДАКТИРОВАТЬ:

очевидно, что этот подход не может быть использован в вашем случае... xpath when: { eq: { 'labels/0/type': 'Number' } } допустимо, но бесполезно. Пока это не выполнимо, мы создали для этого новую проблему. Было бы неплохо иметь что-то вроде when: { eq: { '*/type': 'Number' } } где * может быть текущим контекстом, поэтому вы сможете получить текущий индекс.

Вы должны предоставить внутри Атрибут определенного элемента..

Например, вам нужно скрыть элемент сообщения, основываясь на параметре attr/type. Вам нужно написать такой код..

                        'message' : {
                                type : 'text',
                                group : 'validation',
                                label : 'Error message',
                                when: { ne: { 'data/item/type': "Your Option here!!"} },
                                index : 8
                            },

Предложения приветствуются! Спасибо

Другие вопросы по тегам