dem*_*ank 5 javascript slot vue.js vue-component vuejs2
我正在尝试制作一些 VueJS 的 slot 元素的可重用模板,但效果不佳。
我面临的问题看起来像这样。我制作了 3 个 Vue 文件来构建一些模板。
Guide.vue这将是 for 循环的单元。 ListView.vue导入ListTemplate.vue和Guide.vue ListTemplate有一个v-for用于 Rows 属性的循环ListView.vue和一个用于 Guide.vue 的插槽。我想将v-for循环产生的行道具传递到Guide.vue插槽,但似乎是undefined。因此,我尝试在包装组件元素的模板上声明插槽范围ListView.vue,但它不起作用。
// Guide.vue
<template>
<tr onclick="location.href='info_view.html'">
<td>
<p class="alarm_h1">{{ slotProps.row.title }}</p>
<p class="alarm_h2">{{ slotProps.row.title }}</p>
<p class="alarm_h2">{{ slotProps.row.title }}</p>
</td>
</tr>
</template>
<script>
export default {
name: "guide",
props: ['slotProps', 'row']
}
</script>
// List.vue
<template>
<div>
<Guide-head/>
<List-template :rows="guides">
<template>
<component :is="tr_component"></component>
</template>
</List-template>
</div>
</template>
<script>
import Guide from '../../../components/template/list/tr/Guide'
import GuideHead from '../../../components/template/head/GuideHead'
import ListTemplate from '../../../components/template/list/ListTemplate'
export default {
name: "list",
components: {
Guide,
GuideHead,
ListTemplate
},
data() {
return {
guides: [
{id: 1, date: '2018.08.20 15:00', title: 'title 1', emergency: false},
{id: 2, date: '2018.08.20 15:00', title: 'title 2', emergency: false},
{id: 3, date: '2018.08.20 15:00', title: 'title 3', emergency: false}
],
tr_component: 'guide'
}
}
}
</script>
// ListTemplate.vue
<template>
<div>
<table class="reser_check_table" cellpadding="0" cellspacing="0">
<div v-for="(row, idx) in rows" @click.native="clickNotice(idx)" :key="row.id">
<slot v-bind:row="row">{{row.title}}</slot>
</div>
</table>
</div>
</template>
<script>
export default {
name: "list",
props: ['rows'],
/*components: {
rowTemplate: Row
},*/
methods: {
clickNotice(idx) {
console.log('clicked');
//this.$emit('viewNotice', idx); @viewNotice="view"
},
view() {
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)