随笔 - 175  文章 - 6  评论 - 0  阅读 - 36429

① vue数据改变页面不刷新

如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。

<div id="app">
  {{score}}
  <div @click="changeScore">{{namelist}}</div>
</div>
data: {
    return {
        score:{
            chinese:100,
            english:20,
            math:149
        },
        namelist:['laoxie','dingding','luoluo']
    }    
},
methods: {
  changeScore() { 
    this.score.chinese = 150;//不更新视图
  }
}
  • 因为 Vue 无法探测实例属性上新增的 property,故页面不更新视图。

Vue官方文档提供了两种方法:Vue.set(target,key,val)this.$set(target,key,val)

  • 区别:Vue.set() 可以设置实例创建之后添加的属性,而this.$set() 只能设置实例创建后存在的属性
data: {
    return {
        score:{
            chinese:100,
            english:20,
            math:149
        },
        namelist:['laoxie','dingding','luoluo']
    }    
},
methods: {
  changeScore() { 
    // this.score.chinese = 150;//不更新视图
      // this.$set(this.score,chinese,150)
      Vue.set(this.score,chinese,150)
  }
}
  • target对象不能是vue实例,或者Vue实例的根数据对象
Vue.set(this.score,'wuli',123)
Vue.set(this,'wuli',123);//错误

附:

1 如何设置响应式属性?

第一种:初始化时写入data属性

第二种:Vue.set(target,key,val) | 实例对象.$set( )

  • target对象不能是vue实例,或者Vue实例的根数据对象

第三种:数值变异方法

  • push()
  • unshift()
  • pop()
  • shift()
  • splice()
  • sort()
  • reverse()
posted on   pleaseAnswer  阅读(610)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示