Vue如何用this.$set改變數(shù)組里的某個值
Vue用this.$set改變數(shù)組里的某個值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
/>
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<script src="https://cdn.suoluomei.com/common/js2.0/vue/v2.5.16/vue.js"></script>
<title>表格數(shù)據(jù)分頁</title>
<style>
* {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="vue">
<div id="app">
<p v-for="item in items" :key="item.id">{{item.message}}</p>
</div>
</div>
</body>
<script>
new Vue({
el: "#vue",
data: {
items: [
{ message: "one", id: "1" },
{ message: "two", id: "2" },
{ message: "three", id: "3" },
],
},
methods: {},
mounted() {
let that = this;
// this.items[0] = { message: "first", id: "4" }; //此時對象的值更改了,但是視圖沒有更新
let art = { message: "first", id: "4" };
this.$set(this.items, 0, art); //$set 可以觸發(fā)更新視圖
},
});
</script>
</html>補充知識:
下面看下vue中this.$set()的用法----更新數(shù)組和對象的值
我們先看看官網(wǎng)給出的解釋:

1、更新數(shù)組:
我們有一個數(shù)組,包括人員姓名和人員年齡兩個屬性。
想要實現(xiàn)在頁面剛加載的時候改變姓名為李四的人的信息。
首先我們想到的是在mouted函數(shù)中直接修改name為李四的人的信息
this.itemList[1] = {
name: '李思思',
age: 30
}
console.log(this.itemList[1]);

但是這時候控制臺打印的數(shù)據(jù)更新了,但是頁面視圖卻沒有更新。這時候我們就需要用到this.$set()來更新視圖了。
<!-- 使用$set更新數(shù)組的值 -->
<ul>
<li v-for="(item,index) in itemList" :key="index">
<div>
<span>姓名:</span>
<span>{{item.name}}</span>
<span>年齡:</span>
<span>{{item.age}}</span>
</div>
</li>
</ul>
data() {
return {
itemList: [
{
name: "張三",
age: 18,
},
{
name: "李四",
age: 20,
},
{
name: "王五",
age: 22,
},
],
person: {
name: '前端勸退師'
}
}
},
mounted() {
// 要求
// 修改數(shù)組中姓名為李四的人的信息
// this.itemList[1] = {
// name: '李思思',
// age: 30
// }
// console.log(this.itemList);
console.log("======================");
this.$set(this.itemList, 1, {
name: '李思思',
age: 30
});
},
2、更新對象:
eg:給對象添加一個屬性并賦值,上代碼:
<!-- 使用$set更新對象的值-----給對象添加屬性 -->
<div style="display:flex;">
<p>{{person.name}}</p>
<el-input v-model="person.score" style="width:200px;"></el-input>
</div>
<el-button @click="addScore">自定義成績</el-button>
methods: {
addScore() {
this.person.score = "60"
console.log(this.person);
// this.$set(this.person, "score", "60");
}
}
在button事件點擊的時候給person對象添加score屬性,發(fā)現(xiàn):


我們發(fā)現(xiàn)控制臺打印的結(jié)果顯示給person對象添加了score屬性并賦值了60,但是在頁面上并沒有更新新加的score屬性和它對應(yīng)的值,這時候便使用this.$set()來更新視圖層了。
methods: {
addScore() {
// this.person.score = "60"
// console.log(this.person);
this.$set(this.person, "score", "60");
}
}
這時候就顯示合適了。

注意:this.$set( target, key, value )
target:要更改的數(shù)據(jù)源(可以是對象或者數(shù)組)
key:要更改的具體數(shù)據(jù)
value :重新賦的值。
到此這篇關(guān)于Vue用this.$set改變數(shù)組里的某個值的文章就介紹到這了,更多相關(guān)Vue用this.$set改變數(shù)組某個值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue使用axios導(dǎo)出后臺返回的文件流為excel表格詳解
這篇文章主要介紹了vue使用axios導(dǎo)出后臺返回的文件流為excel表格方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
Angular和Vue雙向數(shù)據(jù)綁定的實現(xiàn)原理(重點是vue的雙向綁定)
這篇文章主要介紹了Angular和Vue雙向數(shù)據(jù)綁定的實現(xiàn)原理(重點是vue的雙向綁定),非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧2016-11-11
Vue 樣式切換及三元判斷樣式關(guān)聯(lián)操作
這篇文章主要介紹了Vue 樣式切換及三元判斷樣式關(guān)聯(lián)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Vue配合Vant使用時area省市區(qū)選擇器的使用方式
這篇文章主要介紹了Vue配合Vant使用時area省市區(qū)選擇器的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
vue awesome swiper異步加載數(shù)據(jù)出現(xiàn)的bug問題
這篇文章主要介紹了vue awesome swiper異步加載數(shù)據(jù)出現(xiàn)的bug問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07
vue新手入門出現(xiàn)function () { [native code]&nbs
這篇文章主要介紹了vue新手入門出現(xiàn)function () { [native code] }錯誤的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04

