# 组件
# 父子组件
子组件
<div>
<span>{{ parentMessage }}</span>
<button @click="add">我是子组件按钮</button>
</div>
export default {
props: {
parentMessage: {
type: String,
default: '默认显示的信息子组件'
// require: true // 必填
}
},
methods:{
add(){
alert('我是子组件的mychild')
}
}
}
父组件
<div>
<my-child :parentMessage="parentMessage"></my-child>
</div>
import MyChild from './MyChild'
export default {
components: {
MyChild
},
data() {
return {
parentMessage: "我是来自父组件的消息"
}
}
}
我是来自父组件的消息
默认显示的信息子组件
# 模态框组件
<div :class="{'ck-modal':true, opened: Visible }" :style="{ width }">
<div class="ck-modal-header">
<span class="title">
<slot name="header">{{title}}</slot>
</span>
<span class="close" @click="Visible = false">×</span>
</div>
<div class="ck-modal-body">
<slot>主体</slot>
</div>
<div class="ck-modal-footer">
<slot name="footer">
<button @click="Visible = false">取消</button>
<button>确定</button>
</slot>
</div>
</div>
export default {
props: {
visible: Boolean,
title: String,
width: {
type: String,
default: '500px'
}
},
data() {
return {
Visible: false
}
},
watch: {
visible(val) {
this.Visible = val;
},
Visible(val) {
this.$emit('update:visible', val);
}
}
}
<div id="app">
<ck-modal title="会员登录" :visible.sync="visible">
我是模态框中的内容
<template slot="footer">
<button @click="visible=false">关闭</button>
<button>提交</button>
</template>
</ck-modal>
<button @click="visible=true">打开模态框</button>
<button @click="visible=false">关闭模态框</button>
</div>
import CkModal from './ck-modal'
export default {
components: {
CkModal
},
data() {
return {
visible: false
}
}
}
会员登录 ×
我是模态框中的内容
# 数字输入框组件
<div>
<button @click="del()" v-bind:class="{ disabled : minstatus }" id="first"> -
</button>
<input type="text" v-model="cval">
<button v-on:click="add($event)" id="second" v-bind:class="{ disabled : maxstatus}"> +
</button>
<p>您选购了{{cval}}商品!</p>
</div>
export default {
props:['max','min','value'],
data(){
return{
cmax : this.max || 15,
cmin : this.min || 0,
cval : this.value || 1,
maxstatus : false,
minstatus : false
}
},
methods:{
add(e){this.cval +=1;},
del(){this.cval -=1;}
},
// 监听
watch:{
cval(){
if(this.cval >= this.cmax){
this.cval = this.cmax;
this.maxstatus = true
}else{
this.maxstatus = false
}
if(this.cval <= this.cmin){
this.cval = this.cmin;
this.minstatus = true
}else{
this.minstatus = false
}
}
}
}
<div id="app">
<ck-input :max="10" :min="1" :value="2"></ck-input>
<ck-input :value="5"></ck-input>
<ck-input :max="50" :value="5"></ck-input>
</div>
import CkInput from './ck-input'
export default {
components: {
CkInput
},
data() {
return {
}
}
}
您选购了2商品!
您选购了5商品!
您选购了5商品!