29. 组件:参数验证
知识点
- props:组件参数验证语法
组件的数据
为组件中接受到的变量进行逻辑验证。
综合例
<div id="myApp">
<h1>身世之谜</h1>
<show-member-info name="koma" :age="25" :detail="{address:'earth', language:'世界语'}"></show-member-info>
</div>
<script>
Vue.component('show-member-info', {
props: {
name: {
type: String,
required: true,
},
age: {
type: Number,
validator: function (value) {
return value >= 0 && value <= 130;
}
},
detail: {
type: Object,
default: function() {
return {
address: 'US',
language: 'English',
};
}
},
},
template: '<div>姓名:{{this.name}}<br/>'
+ '年龄:{{this.age}}岁<br/>'
+ '地址:{{this.detail.address}}<br/>'
+ '语言:{{this.detail.language}} </div>',
});
var myApp = new Vue({
el: '#myApp',
});
</script>
30. 组件:事件传递
知识点
- v-on
- $emit
v-on
侦听组件事件,当组件触发事件后进行事件处理。
$emit
触发事件,并将数据提交给事件侦听者。
综合例
<div id="myApp">
<h1>人生加法</h1>
<add-method :a="6" :b="12" v-on:add_event="getAddResult"></add-method>
<hr/>
<h3>{{result}}</h3>
</div>
<script>
Vue.component('add-method', {
props: ['a', 'b'],
template: '<div><button v-on:click="add">加吧</button></div>',
methods: {
add: function(){
var value = 0;
value = this.a + this.b;
this.$emit('add_event', {
result:value
});
}
},
});
var myApp = new Vue({
el: '#myApp',
data: {
result: 0
},
methods: {
getAddResult: function(pval){
this.result = pval.result;
}
},
});
</script>
31. 组件:slot插槽
知识点
- slot
slot
slot是父组件与子组件的通讯方式,可以将父组件的内容显示在子组件当中。文章来源:https://www.toymoban.com/news/detail-400933.html
综合例
<div id="myApp">
<say-to pname="koma">
你的视频做的太差了。
</say-to>
<say-to pname="mike">
你千万不要学koma。
</say-to>
<say-to pname="john">
你教教他们两个吧。
</say-to>
</div>
<script>
Vue.component('say-to', {
props: ['pname'],
template: '<div>'
+ '你好,<strong>{{pname}}</strong>!'
+ '<slot></slot>'
+ '</div>',
});
var myApp = new Vue({
el: '#myApp',
});
</script>
32. 组件:组合slot
知识点
- slot命名
slot命名
在子组件中通过为多个slot进行命名,来接受父组件的不同内容的数据。文章来源地址https://www.toymoban.com/news/detail-400933.html
综合例
<div id="myApp">
<nba-all-stars c="奥尼尔" pf="加内特">
<span slot="sf">皮尔斯</span>
<span slot="sg">雷阿伦</span>
<span slot="pg">隆多</span>
</nba-all-stars>
</div>
<script>
Vue.component('nba-all-stars', {
props: ['c', 'pf'],
template: '<div>'
+ '<div>中锋:{{c}}</div>'
+ '<div>大前:{{pf}}</div>'
+ '<div>小前:<slot name="sf"></slot></div>'
+ '<div>分卫:<slot name="sg"></slot></div>'
+ '<div>控卫:<slot name="pg"></slot></div>'
+ '</div>',
});
var myApp = new Vue({
el: '#myApp',
});
</script>
到了这里,关于Vue.js学习详细课程系列--共32节(6 / 6)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!