明霞山资源网 Design By www.htccd.com
感觉网上对this.$set的讲解乱糟糟的,我来总结一下对它单个数据、对象、数组、json数据的绑定.
话不多说直接上代码:
<template>
<div>
<!-- 单个数据 -->
<button @click="text0a">text0</button>
<p>text0: {{text0}}</p>
<!-- 对象 -->
<button @click="textObja">textObj</button>
<p>textObj.text1: {{textObj.text1}}</p>
<!-- 数组 -->
<button @click="textArra">textArr</button>
<p>textArr[1]: {{textArr[1]}}</p>
<!-- json数据 -->
<button @click="textJsona">textJson</button>
<p>textJson[1].t5: {{textJson[1].t5}}</p>
</div>
</template>
<script>
export default {
data() {
return{
text0 : '',
textObj: {},
textArr: [],
textJson:[
{t0: ''},
{t4: ''},
{t7: ''},
]
}
},
methods: {
text0a: function () {
let vm = this
let text100 = 'efghjk'
vm.$set(vm,'text0',text100)
//等效于 vm.$set(vm,'text0','efghjk')
},
textObja: function () {
let vm = this
let textObj100 = {
text1: '123',
text2: '456'
}
vm.$set(vm.textObj,'text1',textObj100.text1)
//此时等效于 vm.$set(vm,'textObj',textObj100)
},
textArra: function () {
let vm = this
let textArr200 = ['a1','a2','a3']
vm.$set(vm,'textArr',textArr200)
},
textJsona: function () {
let vm = this
let textJson300 = [
{t1: 't1',t2: 't2',t3: 't3'},
{t4: 't4',t5: 't5',t6: 't6'},
{t7: 't7',t8: 't8',t9: 't9'},
]
vm.$set(vm.textJson[1],'t5',textJson300[1].t5)
//此时等效于 vm.$set(vm,'textJson',textJson300)
}
}
}
</script>
<style>
</style>
补充:Vue 使用$set动态给数据设置属性
在实际的开发过程中,给表单元素绑定model的时候,绑定的元素的属性是根据后台数据动态生成的。如果使用常规的赋值方式,是无法更新视图的
需要使用
this.$set(dataName,keyName,keyValue)
export default {
data:{
// 先定义一个空对象
formObject:{},
arrayList:[],
},
mounted() {
this.initPage()
},
methods:{
initPage(){
this.$store.dispatch(namespace/callData).then(res=>{
// 给数据设置key-value
res.data.forEach(item=>{
// ❗❗❗❗❗ this.formObject[item.name] = item.value // ❗❗❗❗ 这种方式是不能更新视图的
this.$set(this.formObject, item.name, item.value) // ✅✅✅✅可以更新视图
})
})
// 修改数组
this.$store.dispatch(namespace/callData).then(res=>{
// 给数据设置key-value
this.$set(this.arrayList,0,(res.data)[0].id) ✅✅✅✅可以更新视图
})
}
}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。