Vue.js如何獲取data-*的值
data-*
這個屬性熟悉JS的小伙伴都知道,data-*是一個自定義屬性,它的功能是視圖層往js傳遞我們想要傳的數(shù)據(jù)。我們的JS可以控制視圖層,但是我們往往需要用戶操作視圖層,邏輯層也能夠獲取用戶的交互值,這個時候我們就需要data-*屬性了
獲取普通數(shù)據(jù)
我們的js數(shù)據(jù)類型大體上可分為,數(shù)字類型,字符類型,布爾值類型,對象類型。其實還有undefined和null
我把數(shù)字類型,字符類型,布爾值類型稱之為普通數(shù)據(jù)類型,我們接下來分別演示
靜態(tài)獲取
靜態(tài)獲取指的是我們的data-*是寫死的,不是動態(tài)的
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可以獲取數(shù)值 console.log(e.target.dataset) } } })
點擊紅色塊之后的效果:
注意看右邊的數(shù)據(jù),返回的全是字符串??墒俏覀儌鬟f的數(shù)值有的不是字符串,但是全部轉(zhuǎn)化成了字符串了。我們只能后續(xù)進行類型轉(zhuǎn)化了
動態(tài)獲取
動態(tài)獲取數(shù)據(jù)指的是我們獲取的數(shù)據(jù)是動態(tài)的,通常我們喜歡用在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之后的效果
獲取對象數(shù)據(jù)
對象數(shù)據(jù)與普通數(shù)據(jù)不同,它們需要使用JSON.stringfy進行字符串化
動態(tài)獲取
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) }
進行編碼和解碼序列化操作就好了
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue-cli3項目配置eslint代碼規(guī)范的完整步驟
這篇文章主要給大家介紹了關(guān)于vue-cli3項目配置eslint代碼規(guī)范的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Vue WatchEffect函數(shù)創(chuàng)建高級偵聽器
watchEffect傳入的函數(shù)會被立即執(zhí)行一次,并且在執(zhí)行的過程中會收集依賴;其次,只有收集的依賴發(fā)生變化時,watchEffect傳入的函數(shù)才會再次執(zhí)行2023-03-03vue+element搭建后臺小總結(jié) el-dropdown下拉功能
這篇文章主要為大家詳細(xì)介紹了vue+element搭建后臺小總結(jié),el-dropdown下拉功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09