Как получить доступ к значению поля nova в другом компоненте настраиваемого поля vue

PHP 7.3

Laravel 5.8

Я создаю итоговое значение поля формы, то есть умножение значения из двух других полей quantity и price

Это мой код

export default {
    mixins: [FormField, HandlesValidationErrors],

    props: ['resourceName', 'resourceId', 'field'],

    computed: {
        calculatedTotal: function () {
            //return parseFloat(field.price) * parseFloat(field.quantity);
            return 10;
        }
    },

    methods: {
        /*
         * Set the initial, internal value for the field.
         */
        setInitialValue() {
            this.value = this.field.value || ''
        },

        /**
         * Fill the given FormData object with the field's internal value.
         */
        fill(formData) {
            formData.append(this.field.attribute, this.value || '')
        },

        /**
         * Update the field's internal value.
         */
        handleChange(value) {
            this.value = value
        },
    },
}

и шаблон

<template slot="field">
   <input
         :id="field.name"
         type="text"
         class="w-full form-control form-input form-input-bordered"
         :class="errorClasses"
         :placeholder="field.name"
         v-model="calculatedTotal"
      />
 </template>

Я не могу получить доступ к этим значениям здесь, поле количества - это числовое поле по умолчанию Laravel Nova, а поле цены - Денежное поле. с закомментированным кодом выше я получаю сообщение об ошибке undefined field.


person Prafulla Kumar Sahu    schedule 20.06.2019    source источник


Ответы (1)


Если вы находитесь внутри поля, я думаю, вам следует поискать другие поля внутри родительского поля текущего поля. В подобных случаях я делал что-то вроде:

calculatedTotal: function () {
    return parseFloat(this.getElementValue(this.$parent, 'price')) * parseFloat(this.getElementValue(this.$parent, 'quantity'));
}

и в разделе методов я создал getElementValue как метод, просматривающий всех дочерних элементов переданного родителя и получающий значение для одного с переданным атрибутом:

        getElementValue(root, elemName){
            let value = null
            root.$children.forEach(component => {
                if (component.field !== undefined && component.field.attribute == elemName) {
                    value = component.field.value
                }
            })
            return value
        }
person bordieris    schedule 02.09.2019
comment
Спасибо за ваши усилия, Бордиерис. Прошло некоторое время, и я сейчас не работаю над этим проектом, я проверю и дам вам знать, через несколько дней или в выходные. Еще раз спасибо. - person Prafulla Kumar Sahu; 02.09.2019