vue踩坑系列——动态组件
2017-05-19 11:20
344 查看
vue实现动态组件的两种方法
效果图:
右侧按钮是动态组件,分为按钮组件和箭头组件
一种是使用v-if条件渲染:
当seen=0的时候,使用按钮组件,否则使用箭头组件子组件:
<template> <div class="qui-list"> <span class="list-tips">{{tipsText}}</span> <qui-btn v-on:btnClickEvent='clickEvent' :msg=msg class='small' v-if='seen==0' :seen=seen></qui-btn> <qui-arrow v-on:btnClickEvent='clickEvent' :msg=msg class='small' v-else :seen=seen> <img src="xxx.png" slot='icon' class="ico" alt=""> </qui-arrow> </div> </template> <script> //按钮组件 import quiBtn from '../components/quiButton.vue' //箭头组件 import quiArrow from '../components/quiArrow.vue' export default{ props:{ msg:{ default:'上传' }, tipsText:{ default: '默认的文案1' }, currentView:{ default: 'qui-btn' }, seen:{ default:0 } }, components:{ 'qui-btn':quiBtn, 'qui-arrow':quiArrow }, methods:{ clickEvent:function(){ alert('...') } } } </script>父组件:
<template> <div class="pageQuiList"> <qui-list tipsText='文件1' msg='下载1' seen='0'></qui-list><!-- 按钮组件 --> <qui-list v-on:btnClickEvent="test" msg='下载2' tipsText='文件2'></qui-list><!-- 按钮组件 --> <qui-list ref="child1" tipsText="文件3" currentView="qui-arrow" msg='下载3' seen='1'></qui-list><!-- 箭头组件 --> </div> </template> <script> import quiList from '../components/quiList.vue' export default{ name:'pageQuiList', components:{ 'qui-list': quiList }, methods:{ test:function(){ alert('sss') } } } </script>
第二种是使用is+component实现:
子组件:
<template> <div class="qui-list"> <span class="list-tips">{{tipsText}}</span> <!-- <qui-btn v-on:btnClickEvent='btnClickEvent1' :msg=msg class='small'></qui-btn> --> <component :is='currentView' v-on:btnClickEvent='clickEvent' :msg=msg class="small" keep-alive></component> </div> </template> <script> import quiBtn from '../components/quiButton.vue' import quiArrow from '../components/quiArrow.vue' export default{ props:{ msg:{ default:'上传' }, tipsText:{ default: '默认的文案1' }, currentView:{ default: 'qui-btn' } }, components:{ 'qui-btn':quiBtn, 'qui-arrow':quiArrow }, methods:{ clickEvent:function(){ alert('...') } } } </script>父组件:
<template> <div class="pageQuiList"> <qui-list tipsText='自定义文案,默认右边是按钮' msg='弹层'></qui-list> <qui-list v-on:btnClickEvent="test"></qui-list> <qui-list ref="child1" tipsText="最右边是箭头" currentView="qui-arrow"></qui-list> </div> </template> <script> import quiList from '../components/quiList.vue' export default{ name:'pageQuiList', components:{ 'qui-list': quiList }, methods:{ test:function(){ alert('sss') } } } </script>
相关文章推荐
- 前端框架vue.js系列(6):组件概念、动态组件
- MEF学习系列(7): 动态装配Silverlight组件
- Vue系列: 如何通过组件的属性props设置样式
- Vue.js 系列教程 2:组件,Props,Slots
- Vue.js学习系列(十)---给页面增加动态数据
- vue动态组件实现选项卡切换效果
- 【软件测试自动化-QTP系列讲座 31】== 管理动态保留对象的隐藏组件 ==
- vue中用动态组件实现选项卡切换效果
- Vue.js 系列教程 2:组件,Props,Slots
- 使用vue动态组件达到切换效果
- JS组件系列——又一款MVVM组件:Vue(二:构建自己的Vue组件)
- Vue系列:如何将百度地图包装成Vue的组件
- 常用js框架之vue.js(深入四:组件2,slot内容分发,编译作用域,动态切换组件)
- Vue系列:在vux的popup组件中使用百度地图遇到显示不全的问题
- Vue.js 系列教程 2:组件,Props,Slots
- Vue.js-----轻量高效的MVVM框架(十二、组件动态切换)
- 前端架构组件化开发系列二 (基于VUE 扩展组件)
- vue中用动态组件实现选项卡切换效果
- Vue.js学习系列(八)---如何使用组件
- 在Vue组件上动态添加和删除属性