vue 自定义模版组件

vue的组件可以自定义内容,属性 又有slot作配合 可以做出很多自定义模版

 

例子

 

<body>
<div id="app">
<m-modal modal-title="提醒" @on-ok="ok"></m-modal>
<m-modal>
<ul slot="modal-content">
<li v-for="item of list">{{item}}</li>
</ul>

<div slot="modal-footer">
<span>确定</span>
<span>重置</span>
<span>返回</span>
</div>
</m-modal>
<m-modal @on-cancel="cancel"></m-modal>
</div>
<script>
/*
设置的props:
modalTitle 提醒信息 默认为 '这是一个模态框'

定制模板:
slot为modal-content 定制提醒信息模板
slot为modal-footer 定制底部模板

监控子组件状态变化:
事件名on-ok 点击确定触发
事件名on-cancel 点击取消触发
*/

Vue.component("m-modal",{
props:{
modalTitle:{
type:String,
default:'这是一个模态框'
}
},
template:`
<div class="modal">
<div class="modal-header">
<h4>{{modalTitle}}</h4>
</div>
<div class="modal-content">
<div>
<slot name="modal-content">在这里添加内容</slot>
</div>
</div>
<div class="modal-footer">
<slot name="modal-footer">
<input class="btn blue" type="button" value="确定" @click="okHandle" />
<input class="btn" type="button" value="取消" @click="cancelHandle" />
</slot>
 
</div>
</div>
`,
methods:{
okHandle(){
//通知父组件 点了确定
alert("我触发了")
this.$emit("on-ok");
},
cancelHandle(){
alert('取消了');
this.$emit('on-cancel')
}
}
});

var list = [...'妙味课堂'];

new Vue({
el:"#app",
data:{
list:list
},
methods:{
ok:function (){
alert("改变一个div的样式")
},
cancel:function (){
alert("取消了,干别的事情")
}
}
});

</script>
</body>

转载于:https://www.cnblogs.com/blccy/p/8223961.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值