vue2+elementUI项目坑位集锦

vue+element table中,自定义表头内容不是响应式

<template slot="header">
	{{data}}  //此时data数据变化不会使页面中内容随之变化
</template> 

// 把slot=“header”改成 #header 就可以了

vue组件通信子传父函数拼装参数

父组件中@监控方法需要同时获取父组件中参数及子组件参数时,写法如下:
@click="getParam(父组件参数,$event)"  此时$event即为子组件中方法的传参

vue+elementUI中Collapse的自定义title中按钮点击阻止冒泡事件

使用collapse折叠面板, 折叠面板的title使用的自定义内容, 里面包含一个按钮
点击按钮, 按钮事件生效, 但同时, 折叠面板的title点击事件也生效(, 面板折叠或者展开了),若要点击按钮时title本身的点击事件不生效,可用如下写法:

<el-collapse v-model="activeNames" @change="handleChange">
  <el-collapse-item name="1">
    <template slot="title">
      自定义title
      <div @click="stopProp">
        <el-button size="mini" type="primary">我是按钮</el-button>
      </div>
    </template>
    <div>这里是展开内容</div>
  </el-collapse-item>
  <el-collapse-item title="非自定义title" name="2">
    <div>vue+elementUI中Collapse的title自定义如何阻止冒泡事件</div>
  </el-collapse-item>
</el-collapse>
<script>
  export default {
    data() {
      return {
        activeNames: ['1']
      };
    },
    methods: {
      handleChange(val) {
        console.log(val);
      },
      //阻止冒泡事件
      stopProp(e) {
        e.stopPropagation()
      }
    }
  }
</script>

vue2模板语法中使用函数

<template>
  <div> 
  	{{这里想使用函数且携带传参}}
    {{getName(param)}}
  </div>
</template>

// 这里getName只能是计算属性,不能是方法(实测报错),在计算属性中这么写:
 computed: {
     getName: () => {
         return (param) => {
           	// 这里写具体处理流程,最后一定要return出去要在页面上显示的值
           	const res = ................;
             return res
         };
     },
 },

element dialog设置destroy-on-close后关闭弹窗时触发了子组件的mounted

实际使用对话框组件时,设置了destroy-on-close为true的一个el-dialog,在关闭时候,触发了子组件的mounted。

原因在于:

源码中dialog组件destroy-on-close的实现原理为当dialog的visible变成false时(即关闭dialog),destroyOnClose=true属性会使此对话框中class名为el-dialog的key值+1,而key值变化会使得此div重新渲染。
所以这个属性并不是真的关闭弹窗后销毁对话框组件中的元素,而是拿个白板盖住里面的元素,把原来的元素藏起来,生成白板的时候,会把原来的元素一起刷新一次,所以会触发原组件的mouted。

解决方法:

不使用destroy-on-close属性,而是用v-if来判断对话框内子组件

vue中v-for中数据变了,但视图没变

在v-for中列表的每个item都有个按钮,点击按钮,想把按钮的类名通过一个属性show,type为boolean来动态的选择,v-show通过每个item这个show的true还是false来显示。但是实际运行中,点击后值的确改变了,但是视图并没有重新渲染。搜索结果显示:v-for对于数组的添加删除会重新渲染,但是修改数组中某个值则不会。

原因:

vue对于data中数组的属性双向绑定仅限于声明时存在的属性,后续方法中添加的属性不会被vue监听到。

解决方法:

1、v-for使用的data中的数组在声明时把参数写进去。
2、使用vue的set方法:

import Vue from 'vue'
ssss() {
    for(var i=0;i<arr.length;i++){
      arr[i].show=false
      Vue.set(this.productDetailList,i,arr[i])
   	}
}

div设置圆角以后,当滚动条出现,圆角会失效

css overflow和border-radius一起用会出现如下情况img

解决办法为外层套一个div,设置overflow: hidden和border-radius,内层的div设置overflow-y:auto;高度100%即可

element el-tree自定义节点选中高亮样式

// 给组件添加highlight-current属性,然后css中写入内容如下:

//  移入树形
.el-tree-node__content:hover {
  background: rgba(0, 229, 255, 0.3) !important;
}
// 选中当前node的样式
.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
  background: rgba(0, 229, 255, 0.5)!important;
  color: red!important;
}
element el-tree组件手动选中节点(setCurrentKey)不会自动展开此节点

在vue2中,需要实现外部组件点击时,携带参数来跳转到含有tree组件的页面,同时需要根据携带的参数,让tree组件默认展开并选中某个节点,当使用this.$refs.xxxxx.setCurrentKey(id)来手动选中tree组件此节点时,需要在组件上搭配node-key,default-expanded-keys,highlight-current三个属性才能实现需求,setCurrentKey方法只能使节点被选中,并没有展开的逻辑,需要结合default-expanded-keys

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值