Как я могу использовать foreach в Vue Select? - PullRequest
0 голосов
/ 17 октября 2018

Как я могу использовать цикл Vue в поле выбора, чтобы параметры категории и подкатегории выглядели так:

+ новости-sport-Международный+ блог

Я могу сделать это с помощью PHP следующим образом:

   @foreach($categories as $category)
    <option value="{{$category->id}}">{{$category->name}}</option>
    @foreach($category->subcategory as $sub)
        <option value="{{$sub->id}}">-{{$sub->name}}</option>
    @endforeach 
@endforeach 

** Я хочу использовать это в компоненте Vue **

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Очень просто сделать нестандартный селектор в vuejs

// Initialize the vue instance
var app = new Vue({
  el: '#app',
  // Initialize the data, in the case that you are using Laravel
  //and Blade for example here is where you will need to retrive
  //all the categories like:
  // data: {{ Category::with(['subcategories'])->get() }}
  data: {
    categorySelected: null,
    subcategorySelected: null,
    message: 'Hello Vue!',
    categories: [
      {
        name: 'news',
        subcategories: [
          {
            name: 'sport'
          },
          {
            name: 'international'
          }
        ]
      },
      {
        name: 'blog',
        subcategories: [
          {
            name: 'a blog subcategpry example'
          },
          {
            name: 'another blog subcategpry example'
          }
        ]
      }
    ]
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
  <label>Category Selectded : {{ categorySelected ? categorySelected.name : null }}</label> <br>
  <label>Subcategory Selectded : {{ subcategorySelected ? subcategorySelected.name : null }}</label> <br>
  <select v-model="categorySelected">
     <optgroup v-for="category in categories" :label="category.name">  
      <option
        v-for="subcategory in category.subcategories"
        :value="subcategory"
      >
        {{subcategory.name}}
      </option>
    </optgroup>
  </select>
<div>
0 голосов
/ 17 октября 2018

Вы можете использовать для в optgroup, как это:

<select v-model="selectedcategory" name="parent" class="form-control">
    <optgroup v-for="category in categories">
      <option :value="category.id">+{{category.name}}</option>
      <option v-for="subcategory in category.subcategories" :value="subcategory.id">
        -{{subcategory.name}}
      </option>
</optgroup>

0 голосов
/ 17 октября 2018

Попробуй это.Js:

let vm = new Vue({
    el: "#app",
    data: {
        integer: [{
            id: 1,
            name: 'odd',
            numbers: [{id: 1, name: 'one'}, {id: 3, name: 'three'}]
        }, {
            id: 2,
            name: 'even',
            numbers: [{id: 2, name: 'two'}, {id: 4, name: 'four'}]
        }],
    },
});

HTML:

<option v-for="item in integer" :value="item.id" v-text="item.name"></option>
    <option v-for="num in item.numbers" :value="num.id" v-text="num.name"></option>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...