代码之家  ›  专栏  ›  技术社区  ›  Qwertie

基于v-for中的条件添加vue组件

  •  1
  • Qwertie  · 技术社区  · 6 年前

    [{type:'text', data: 'some text'},{type: 'image',  data: 'link/to/image'}]
    

    对于不同的 type <text-block> , <image-block> v-for 要循环此数组并基于类型,请创建正确的vue组件。

    v-for的例子显示了多次创建相同的元素 <li> . 有没有一种方法可以在一个场景中创建不同的元素 ?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Axel    6 年前

    你可以用 v-if :

    <div v-for="(loop, index) in loops" :key="index">
        <text-block v-if="loop.type === 'text'"></text-block>
        <image-block v-if="loop.type === 'image'"></image-block>
    </div>
    

    <div v-for="(loop, index) in loops" :key="index">
        <component :is="loop.type + '-block'"></component>
    </div>
    

        2
  •  -1
  •   Rohan Shukla    6 年前

    你可以这样做,假设在一个数组中有电影列表:

    <div id="app">
    <ul>
    <li v-for="movie in movies">{{ movie }}</li>
    </ul>
    </div>
    <script>
    
    var app = new Vue({
    
    el: '#app',
    data: {
      movie: ['some movie 1', 'movie 2', 'idk movies man']
    }
    
    });
    
    setTimeout(function() {
    app.movies.push('random movie');
    
    }, 2000);
    
    </script>