Показать поле на основе другого в 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
},
Предложения приветствуются! Спасибо