Vue2.0 slot分发内容与props验证的方法(2)
你猜页面上会显示什么?猜对了我就告诉你-。-
具名slot.png
是不是被顺序惊到了,这是因为页面会根据子组件中slot的顺序去替换内容并渲染页面。
可以使用一个匿名的slot,处理那些没有对应slot的内容
<div id="app">
<h2>自定义组件</h2>
<custom>
<!-- <div slot="one">我替换one</div> -->
<div slot="three">我替换three</div>
<div slot="two">我替换two</div>
<span slot="two">我替换two</span>
<div slot="one">我替换one</div>
<div>替换无名的slot</div>
<div>替换无名的slot</div>
<div>替换无名的slot</div>
</custom>
</div>
<script type="text/javascript" src='https://i0.jrjimg.cn/zqt-red-1000/focus/focus2017YMZ/teamFrighting/js/vue.min.js'></script>
<script>
Vue.component('custom',{
template:`
<div>
<slot name="one">
<p>我是one</p>
</slot>
<slot name="two">
<p>我是two</p>
</slot>
<slot name="three">
<p>我是three</p>
</slot>
<slot>
<p>我是无名的slot</p>
</slot>
</div>
`
})
new Vue({
el:"#app"
})
</script>
匿名的slot就会被那些没有对应slot的内容替换。
匿名slot.png
三、编译作用域
父组件模板的内容在父组件作用域内编译
子组件模板的内容在子组件作用域内编译
<div id="app">
<h2>自定义组件</h2>
<custom>
<!-- 渲染的数据,是父组件中的数据,如果想使用子组件中的数据,就在子组件中建立自己的数据 -->
{{message}}
</custom>
</div>
<script type="text/javascript" src='https://i0.jrjimg.cn/zqt-red-1000/focus/focus2017YMZ/teamFrighting/js/vue.min.js'></script>
<script>
Vue.component('custom',{
data(){
return {
message:"我是子组件的数据"
}
},
template:`
<div>
<p>我是{{message}}</p>
<slot>
// 这的内容会被父组件中内容替换
<p> {{message}}</p>
</slot>
</div>
`
})
new Vue({
el:"#app",
data:{
message:"我是父组件的数据"
}
})
</script>
页面渲染
