Scr*_*her 2 vue.js vue-component
我试图了解<slot>Vue模板中的用法。按照我的理解,插槽可用于将组件中的子内容传递到模板。
下面是一个简短的最小工作示例(也在codepen上)。
Vue.component('mine', {
template: '#mine'
})
var app = new Vue({
el: '#app'
})Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>
<script type="text/x-template" id="mine">
<h1>this is it</h1>
<slot></slot>
</script>
<div id="app">
<mine>
<p>why isn't this displayed</p>
</mine>
</div>Run Code Online (Sandbox Code Playgroud)
我希望输出是这样的:
<h1>this is it</h1>
<p>why isn't this displayed</p>
Run Code Online (Sandbox Code Playgroud)
但是,发生的是呈现页面时第二行没有出现。
模板需要具有单个根DOM元素。看起来Vue只是将h1当作整个模板,而将其余模板丢弃:
Vue.component('mine', {
template: '#mine'
})
var app = new Vue({
el: '#app'
})Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>
<script type="text/x-template" id="mine">
<div>
<h1>this is it</h1>
<slot></slot>
</div>
</script>
<div id="app">
<mine>
<p>why isn't this displayed</p>
</mine>
</div>Run Code Online (Sandbox Code Playgroud)
(使用该库的“开发人员模式”版本将为您提供有关此类问题的更好的错误消息:)
Vue.component('mine', {
template: '#mine'
})
var app = new Vue({
el: '#app'
})Run Code Online (Sandbox Code Playgroud)
<script src="https://vuejs.org/js/vue.js"></script>
<script type="text/x-template" id="mine">
<h1>this is it</h1>
<slot></slot>
</script>
<div id="app">
<mine>
<p>why isn't this displayed</p>
</mine>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
913 次 |
| 最近记录: |