@zorro3

Почему метод Vue.set добавляет значение для двух свойст объектов в масиве?

<z-text-field
      value="field.expression[expressionValue(field.expressionName)].attributeValuePair.attribute"
       placeholder="Enter expression attribute"
       class="subfields-expression-field"
       @input="onInputChange($event, 'attribute', index, true, 
        expressionValue(field.expressionName))"/>


onInputChange(data, field, schemaIndex, isExpression = false, expressionName) {
            const groupIndex = this.entitySchemasGroupIndex // 0
            const groupName = this.schemaGroupName // attributes
            this.setEntitySchema({
                groupIndex,
                groupName,
                schemaIndex,
                field,
                expressionName,
                isExpression,
                data,
            })
        },

        setEntitySchema(state, val) {
            const { groupIndex, groupName, schemaIndex, field, expressionName, isExpression = false, data } = val
            // find schema by group index and group name and schema index
            const entitySchema = state.policyToEdit.schemas[groupIndex][groupName][schemaIndex]
            // find expression value be expression title
            const expressionValue = entityExpressionValuesMap[data]
            // use expression value to find list of fields related to found expression
            const expressionFields = expressionProps[groupName].fields[expressionValue]
            if (isExpression) {
                const expressionWrapperValue = attributeWithValueWrapperValues
                    .filter(ex => ex === expressionName)[0] || "" // check if expression has an additional wrapper
                const obj = expressionWrapperValue.length > 0 ? entitySchema.expression[expressionName] :
                    entitySchema.expression
                const key = expressionWrapperValue.length > 0 ? entityExpressionWrapperMap[expressionWrapperValue] :
                    expressionName
                const params = { ...obj[key], [field]: data }
                Vue.set(obj, `${key}`, params)
            } else {
                Vue.set(entitySchema, field, data)
                // if expression chosen then add related fields to expression
                if (entityExpressionValuesMap[data]) {
                    Vue.set(entitySchema, "expression", { [expressionValue]: expressionFields })
                }
            }
        },


как результат, когда пишу в поле атрибут, значение задается для двух элементов
60f42a244d9dc187046211.png
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы