Vue.js如何获取data-*的值

 更新时间:2022年09月21日 10:52:31   作者:大前端工程师  
这篇文章主要介绍了Vue.js如何获取data-*的值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

data-*

这个属性熟悉JS的小伙伴都知道,data-*是一个自定义属性,它的功能是视图层往js传递我们想要传的数据。我们的JS可以控制视图层,但是我们往往需要用户操作视图层,逻辑层也能够获取用户的交互值,这个时候我们就需要data-*属性了

获取普通数据

我们的js数据类型大体上可分为,数字类型,字符类型,布尔值类型,对象类型。其实还有undefined和null

我把数字类型,字符类型,布尔值类型称之为普通数据类型,我们接下来分别演示

静态获取

静态获取指的是我们的data-*是写死的,不是动态的

html代码

<div id="app">
	<div :style="myStyle" data-num=1 data-str="hello" data-bool=true @click="click($event)"></div>
</div>

js代码

var app=new Vue({
	el:'#app',
	//myStyle是样式对象
	data() {
		return{
			myStyle:{
				background:"red",
				width:100+"px",
				height:100+"px"
			}
		}
	},
	methods:{
		click:function(e){
		    //e.target.dataset可以获取数值
			console.log(e.target.dataset)
		}
	}
})

点击红色块之后的效果:

注意看右边的数据,返回的全是字符串。可是我们传递的数值有的不是字符串,但是全部转化成了字符串了。我们只能后续进行类型转化了

动态获取

动态获取数据指的是我们获取的数据是动态的,通常我们喜欢用在v-for中,用于判断用户点击列表为第多少项

html

<div id="app">
	<ul>
		<li v-for="(item,index) in datalist" :data-op="index" @click="click($event)">{{item.name}}</li>
	</ul>
</div>

js

var app=new Vue({
	el:'#app',
	data() {
		return{
			datalist:[
				{
					id:0,
					name:'小明',
				},
				{
					id:1,
					name:'小红',
				},
				{
					id:2,
					name:'小刚',
				}
			]
		}
	},
	methods:{
		click:function(e){
			let {op}=e.target.dataset
			console.log("选中了第"+(parseInt(op)+1)+"项")
		}
	}
})

点击li之后的效果

获取对象数据

对象数据与普通数据不同,它们需要使用JSON.stringfy进行字符串化

动态获取

HTML

<div id="app">
	<ul>
		<li v-for="(item) in datalist" :data-item="JSON.stringify(item)" @click="click($event)">
			{{item.name}}</li>
	</ul>
</div>

js

var app = new Vue({
	el: '#app',
	data() {
		return {
			datalist: [{
					id: 0,
					name: '小明',
				},
				{
					id: 1,
					name: '小红',
				},
				{
					id: 2,
					name: '小刚',
				}
			]
		}
	},
	methods: {
		click: function(e) {
			let {
				item
			} = e.target.dataset
			item = JSON.parse(item)
			console.log(item)
		}
	}
})

如果遇到特殊字符报错的话,尝试修改JS代码如下:

click: function(e) {
	let {
		item
	} = e.target.dataset
	item=encodeURIComponent(item)
	item = JSON.parse(decodeURIComponent(item))
	console.log(item)
}

进行编码和解码序列化操作就好了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue.js实现会动的简历(包含底部导航功能,编辑功能)

    vue.js实现会动的简历(包含底部导航功能,编辑功能)

    这篇文章主要介绍了vue.js实现一个会动的简历(包含底部导航功能,编辑功能),本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • 浅析vue插槽和作用域插槽的理解

    浅析vue插槽和作用域插槽的理解

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不现实、以及怎样显示由父组件来决定。这篇文章主要介绍了浅析vue插槽和作用域插槽的理解,需要的朋友可以参考下
    2019-04-04
  • vue2.0基于vue-cli+element-ui制作树形treeTable

    vue2.0基于vue-cli+element-ui制作树形treeTable

    这篇文章主要介绍了vue2.0基于vue-cli+element-ui制作树形treeTable,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • vue框架编辑接口页面下拉级联选择并绑定接口所属模块

    vue框架编辑接口页面下拉级联选择并绑定接口所属模块

    这篇文章主要为大家介绍了vue框架编辑接口页面实现下拉级联选择以及绑定接口所属模块,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Vue中使用md5进行数据加密的实现方法

    Vue中使用md5进行数据加密的实现方法

    在现代Web开发中,数据安全是一个不可忽视的重要环节,Vue.js作为一个流行的前端框架,不仅提供了强大的数据绑定和组件化功能,还支持与各种后端服务的集成,本文将探讨如何在Vue应用中使用MD5算法来加密数据,从而提升应用的安全性,需要的朋友可以参考下
    2024-10-10
  • 解决Vue项目中tff报错的问题

    解决Vue项目中tff报错的问题

    这篇文章主要介绍了解决Vue项目中tff报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • vue 引入公共css文件的简单方法(推荐)

    vue 引入公共css文件的简单方法(推荐)

    下面小编就为大家分享一篇vue 引入公共css文件的简单方法(推荐),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Vue3项目实现前端导出Excel的示例代码

    Vue3项目实现前端导出Excel的示例代码

    这篇文章主要介绍了Vue3项目实现前端导出Excel的示例,在vue3的项目中导出Excel表格的功能,可以借助xlsx库来实现,下面是详细的操作步骤,需要的朋友可以参考下
    2025-01-01
  • uniapp和vue的区别详解

    uniapp和vue的区别详解

    这篇文章主要介绍了uniapp和vue的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • vue项目点击元素后如何改变样式

    vue项目点击元素后如何改变样式

    这篇文章主要介绍了vue项目点击元素后如何改变样式问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10

最新评论