Как сделать дочерние компоненты осведомленными о вложенных данных инициализации в Vue?

Итак, это мой тестовый код:

Vue.component('area-selectors-box', {
  template: `
    <div class = "selectors-box">
      <area-selector v-for = "select in selects"></area-selector>
    </div>
  `,
  props:['selects']
});

Vue.component('area-selector', {
  template: `
    <select>
      <option disabled selected value = "">Seleziona continente</option>
      <option :areas = "select.areas" v-for = "area in areas">{{ area.name }}</option>
    </select>
  `,
  props:['select']
});

var dealer_manager = new Vue({
  el: '#dealers-main-box'
  ,data:{
    dealers:[],
    selects:[]
  }
  ,mounted: function(){
  }
  ,created: function(){
    this.get_dealers_data('00');
  }
  ,methods: {
    get_dealers_data: function(area_id){
      var app = this;

      $.ajax({
        type: 'GET'
        ,dataType: 'json'
        ,url: dealers_settings.api_url + area_id
      })
      .done(function(json_data, status, xhr){
        if (!json_data) return;
        var parsed = JSON.parse(json_data);
        if (parsed.type == 'areas'){
          app.selects.push({
            areas: parsed.items
          });
        } else if (parsed.type == 'dealers'){
          app.dealers = parsed.items;
        }
      }.bind(this))
      .fail(function( jqXHR, textStatus, errorThrown ){
      }.bind(this))
    }// get dealers data
  }
});

Это данные json, которые я получаю и передаю в поле селекторов областей:

Как сделать дочерние компоненты осведомленными о вложенных данных инициализации в Vue?

Отлично. Но данные в селекторе области пусты. Как я могу сообщить об областях во время инициализации? Как видите, area — это массив объектов.

Как сделать дочерние компоненты осведомленными о вложенных данных инициализации в Vue?

Как ни странно (для меня), если я сделаю все в одном компоненте, он будет работать правильно:

Vue.component('area-selectors-box', {
  template: `
    <div class = "selectors-box">
      <select :selects = "selects" v-for = "select in selects">
        <option disabled selected value = "">Seleziona continente</option>
        <option v-for = "area in select.areas">{{area.name}}</option>
      </select>
    </div>
  `,
  props:['selects']
});

Итак, я думаю, что мне следует научиться передавать подданные в подкомпоненты... Любая помощь? :)

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решено: мне нужно пройти что угодно..

Vue.component('area-selectors-box', {
  template: `
    <div class = "selectors-box">
      <area-selector v-for = "select in selects" :select = "select"></area-selector>
    </div>
  `,
  props:['selects']
});

Vue.component('area-selector', {
  template: `
    <select :select = "select">
      <option disabled selected value = "">Seleziona continente</option>
      <area-option v-for = "area in select.areas" :area = "area" :key = "area.term_id"></area-option>
    </select>
  `,
  props:['select']
});

Vue.component('area-option', {
  template: `<option :area = "area">{{area.name}}<slot></slot></option>`
  ,props: ['area']
});

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