怎么把element的tootip设置为点击后出现提示框,且在提示框里面放其他元素,vue2动态给对象添加属性并实现响应式应答,样式穿透,获取年月日

时间:2025-01-18 19:28:35

怎么把element的tootip设置为点击后出现提示框

我目前有一个需求,就是要点击文字才会出现提示框,而不是hover上去就以后,找资料看文档,看了半天让我终于实现了,其实也不难,可能是最开始我没有理解value(状态是否可见)的意思吧

value(状态是否可见):我们知道了这个就很简单啦,true就是提示框可见,false就是提示框不可以见,那么我们点击控制value并且打开手动模式就好啦,manual

value动态取值,控制显隐

要想在提示框里面放其他的东西就用slot插槽来做,<div slot="content">可以写任何东西</div>

<el-tooltip placement="bottom-end" manual :value='flag' >
  <div slot="content">
    <div>
      <el-input></el-input>
      <el-button >评论</el-button>
    </div>
  </div>
  <span @click="replyContent">
    {{ flag ? "取消" : "回复" }}
  </span>
</el-tooltip>
replyContent() {
 this.flag = !this.flag;
},

在这里插入图片描述

点击回复就会出现提示框,在点取消就没有了

在这里插入图片描述

最开始我是直接用的disabled属性来做的,但是我发现点击后需要重新把鼠标移上去才行,就又重新找方法了

vue2动态给对象添加属性并实现响应式应答

最近有一个需求,用的v-for循环数组渲染出来,但是呢,渲染中有用v-show,因为是循环所以一点击就全部隐藏的都显示了

这样肯定不行舍,所以我就准备利用,动态添加属性,来做显隐功能,随便点击一个,那么就给这一个添加一个新属性,这样就这有这一个有新属性,其他的没有,就会只显示这一个了,但是问题来了,我发现我添加了后就不能响应式刷新

这是什么原因呢?然后我想起,vue2直接添加属性是不会响应式刷新的,也不能数组下标也是没有被劫持的,然后我就去百度找,找到了解决办法

根据官方文档定义:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。

Vue 不允许在已经创建的实例上动态添加新的根级响应式属性 (root-level reactive property)。

然而它可以使用 (object, key, value) 方法将响应属性添加到嵌套的对象上。

<template>
	<input type="button" @click="demoSet" value="name">
</template>
<script>
export default {
	data() {
		return {
			form:{
				id:1
			}
		}
	},
	methods:{
		demoSet(){
			// 这样设置是不行的
			this.form.amount=2;
			// 这样才可以实现响应式
			this.$set(this.form,"amount",2);
		}
	}
}
</script>

样式穿透

当我们用第三方UI库的时候,有时候想要改一改样式,但是又由于别人已经把样式封装好了,改不了,这时就需要用到样式穿透来改样式

比如我们现在想改一改element的时间选择器中间 至 的宽度,就可以这样改

<el-form-item label="时间" class="elselect">
  <el-date-picker
        v-model=""
        type="daterange"
        range-separator=""
        start-placeholder="开始日期"
        end-placeholder="结束日期">
    </el-date-picker>
</el-form-item>

elselect 是我们自己定义的class,el-range-separator 这是官方的class
现在我们用自己的样式去穿透官方就可以修改了

.elselect /deep/ .el-range-separator {
 width: 24px;
}

获取年月日

new Date().toLocaleDateString();

let newDate = new Date().toLocaleDateString();
console.log(newDate);

在这里插入图片描述