Ответы пользователя по тегу Vue.js
  • Как прокинуть обратную связь между компонентами?

    Чтобы была обратная связь, вам из родительского компонента в дочерний нужно передать объект/строку/массив (не суть важно что именно), который дочерний компонент будет изменять.
    Привязка input к объекту делается через атрибут `v-model`.

    Будет ли при этом использоваться vuex или нет, это не важно, подход при этом никак не изменится. Без vuex вы передаёте объект, лежащий в родительском компонента, а с vuex будете брать объект из vuex хранилища.

    Немного отредактировал ваш пример
    Родитель
    <template lang="pug">
      form
        div you wrote: {{input_data.value != '' ? input_data.value : 'nothing'}}
        c_input(
          :input_data="input_data"
        )
        button Отправить
    </template>
    
    <script>
    import c_input from './test_2'
    export default {
      components: { c_input },
      data() {
        return {
          input_data: {
            name: Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5),
            append: '',
            value: '',
            placeholder: '',
            error: 'zz'
          }
        }
      }
    }
    </script>
    Потомок
    <template lang="pug">
      .form-group
        input(
          type="text"
          class="form-control"
          :class="input_data.append"
          v-model="input_data.value"
          :placeholder="input_data.placeholder"
          :name="input_data.name"
          :id="input_data.name"
        )
        label(
          :for="input_data.name"
          generated="true"
          class="error"
          v-if="input_data.error"
        ) error: {{ input_data.error }}
      </div>
    </template>
    
    <script>
      export default {
        props: {
          input_data: Object
        }
      }
    </script>


    На скриншоте выделил важные моменты что откуда куда передаётся take.ms/YvbyL
    take.ms/7uGdO
    Ответ написан
    Комментировать