1. vue中管道操作符(|)的使用

//自定义过滤器,通过管道操作符|改变列表单元格的值 <el-table-column prop="status" label="状态" align="center" width="80"> <template slot-scope="scope"> {{scope.row.status | getStatus}} </template> </el-table-column> <script> export default { data() { return {......} }, filters: { getStatus: function(num){ let str = '' if (num == 1){ str = '启用' } else { str = '禁用' } return str; } }, methods: { list(){......}, }, } </script>
参考:自定义过滤器
2. $refs获取指定元素
$refs的作用类似于以前jquery的 $('#id')获取指定的元素
使用方法:

<section class="login_message"> <input type="text" maxlength="11" placeholder="验证码" v-model="captcha"> <img class="get_verification" src="http://localhost:27017/captcha" alt="captcha" @click="getCaptcha" ref="captcha"> // 先使用ref绑定元素 </section> // 获取一个新的图片验证码 getCaptcha () { // 每次指定的src要不一样,才会重先发请求 this.$refs.captcha.src = 'http://localhost:27017/captcha?time='+Date.now() }
3. $emit分发事件
vm.$emit( eventName, […args] ) 用于触发当前实例上的事件。附加参数都会传给监听器回调。
使用方法:
单独定义了一个用于弹框的组件AlertTip.vue:

<template> <div class="alert_container"> <section class="tip_text_container"> <div class="tip_icon"> <span></span> <span></span> </div> <p class="tip_text">{{alertText}}</p> <div class="confrim" @click="closeTip">确认</div> </section> </div> </template> <script> export default { props: { alertText: String }, methods: { closeTip() { // 分发自定义事件(事件名: closeTip): 向外分发事件以后,在调用AlertTip组件时,可以调用closeTip事件关闭该弹框 this.$emit('closeTip') } } } </script> <style lang="stylus" rel="stylesheet/stylus" scoped> @import '../../common/stylus/mixins.styl'; @keyframes tipMove 0% transform: scale(1) 35% transform: scale(.8) 70% transform: scale(1.1) 100% transform: scale(1) .alert_container position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 200; background: rgba(0, 0, 0, .5) .tip_text_container position: absolute; top: 50%; left: 50%; margin-top: -90px margin-left: -110px width: 60% animation: tipMove .4s; background-color: rgba(255, 255, 255, 1); border: 1px; padding-top: 20px display: flex; justify-content: center; align-items: center; flex-direction: column; border-radius: 5px .tip_icon width: 55px height: 55px border: 2px solid #f8cb86; border-radius: 50%; font-size 20px display: flex; justify-content: center; align-items: center; flex-direction: column; span:nth-of-type(1) width: 2px height: 30px background-color: #f8cb86; span:nth-of-type(2) width: 2px height: 2px border: 1px; border-radius: 50%; margin-top: 2px background-color #f8cb86 .tip_text font-size 14px color #333 line-height 20px text-align center margin-top 10px padding 0 5px .confrim font-size 18px font-weight bold margin-top 10px background-color #4cd964 width 100% text-align center line-height 35px border 1px color #fff border-bottom-left-radius 5px border-bottom-right-radius 5px </style>