在 v-for 中添加基于条件的 vue 组件
Adding vue components based on condition in v-for
我有一个格式类似于
的 JS 数组
[{type:'text', data: 'some text'},{type: 'image', data: 'link/to/image'}]
对于 type
的不同值,我有不同的 vue 组件(<text-block>
、<image-block>
),我想使用 v-for
遍历这个数组,根据类型,创建合适的 vue 组件。
v-for 的示例显示多次创建相同的元素,如多次 <li>
。有没有办法在 v-for
?
中创建不同的元素
你可以只使用 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>
确保您已导入组件并在实例上定义它们。
你可以这样做,假设数组中有电影列表:
<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>
我有一个格式类似于
的 JS 数组[{type:'text', data: 'some text'},{type: 'image', data: 'link/to/image'}]
对于 type
的不同值,我有不同的 vue 组件(<text-block>
、<image-block>
),我想使用 v-for
遍历这个数组,根据类型,创建合适的 vue 组件。
v-for 的示例显示多次创建相同的元素,如多次 <li>
。有没有办法在 v-for
?
你可以只使用 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>
确保您已导入组件并在实例上定义它们。
你可以这样做,假设数组中有电影列表:
<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>