第一个问题 - How to create components in a loop?
在我的Index.vue中,我有一个循环
<div v-for="(image, id, index) in images" class="col-md-4">
<photo :src ="image.src" :symbolId="image.id" :photoId="image.photo_id" :index="index"></photo>
</div>
在我的app.js中我注册了一个组件
Vue.component('photo',
require('./components/Photo.vue')
);
和我的Photo.vue
<template>
<img v-on:click="replaceImages()" :src="src" class="img-responsive image" :data-symbol-id="symbolId" :data-photo-id="photoId">
<input :name="index" :data-symbol-id="symbolId" :data-photo-id="photoId"
type="hidden" :value="src">
</template>
<script>
export default {
name: 'photo',
props: {
src: {
type : String,
required: true
},
symbolId: {
type: String,
required: true
},
photoId: {
type: Number,
required: true
},
index: {
type: Number,
required: true
}
},
}
</script>
但是当npm编译它时,我收到错误
组件模板应该只包含一个根元素。如果您在多个元素上使用v-if,请使用v-else-if来链接它们。
答案 0 :(得分:2)
添加一个div
代替模板,Vue期望一个包含所有模板的根元素,如果使用如下示例,则vue将省略模板标记
<template>
<div>
<img v-on:click="replaceImages()" :src="src" class="img-responsive image" :data-symbol-id="symbolId" :data-photo-id="photoId">
<input :name="index" :data-symbol-id="symbolId" :data-photo-id="photoId"
type="hidden" :value="src">
</div>
</template>
var child = {
template : '<div>Child component</div>'
}
var app = new Vue({
el:"#app",
components:{
child
},
data:{
name:''
}
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.11/vue.js"></script>
<div id="app">
<child></child>
</div>
&#13;