vue 自定义模版组件

Posted blccy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

以上是关于vue 自定义模版组件的主要内容,如果未能解决你的问题,请参考以下文章

vue创建自定义组件并监听原生事件

vue7自定义组件,插槽

vue 自定义组件之父子组件

Vue自定义组件父与子

Cesium指南-自定义vue组件

vue之自定义组件