vue data数据变化 页面数据不更新问题

问题:

<template>
  <div class="container">
    <div v-for="(item, index) in arrList" :key="index">
      <span>{{ item.name }}-{{  item.age }}-{{ item.score }}</span>
    </div>
  </div>
</template>

<script>
export default {
  data () {
    return {
      arrList: []
    }
  },
  created() {
    this.arrList = [
      {
        name: ‘小明‘,
        age: ‘20‘,
      },
      {
        name: ‘李华‘,
        age: ‘18‘
      }
    ]
    this.getScore()
  },
  methods: {
    getScore() {
      let that = this
      setTimeout(() => {
        let res = [[59,59,59], [60,60,60]]
        res.forEach((item,  index) => {
          that.arrList[index].score = item
        })
      }, 1000)
    }
  }
}
</script>

页面显示:

解决办法:  使用this.$set()

methods: {
    getScore() {
      let that = this
      setTimeout(() => {
        let res = [[59,59,59], [60,60,60]]
        res.forEach((item,  index) => {
          // that.arrList[index].score = item

          // 下面两种方法都可以
          // 1、使用this.$set()修改数据
          let arr = that.arrList[index]
          arr.score = item
          that.$set(that.arrList, that.arrList[index], arr)

          // 2、使用this.$set()添加数据
          that.$set(that.arrList[index], ‘score‘, item)
        })
      }, 1000)
    }
  }

根据官方的文档,使用数组的API是可以直接触发页面更新的

原文地址:https://www.cnblogs.com/baobao0205/p/11747230.html

时间: 2024-08-01 08:01:10

vue data数据变化 页面数据不更新问题的相关文章

解决收到数据后页面不自动更新问题

有时候某些数据需要一条一条地向后台查询,而vue又不会在查询到结果后自动更新,这时候就应该在返回结果后强制更新页面,语法为: this.$forceUpdate() // 强制更新页面 正如这个博客项目,由于每个栏目下文章数目是需要按栏目ID查询,逐一查询后发现页面没有显示,所以按下面代码去写,即可解决这个问题. this.$http.get(url, {}) .then((res) => { column.articleAmount = res.body.data.articleAmount

angular2 http请求返回数据之后页面数据没有刷新

使用http进行请求之后返回的数据有更新,但是绑定页面的数据并没有刷新,经过查找之后 发现可以使用变更检测 ChangeDetectorRef 来进行检测刷新. 官方文档说明 :ChangeDetectorRef 应用代码如下: import {Component,NgModule,ChangeDetectorRef, OnInit}from'@angular/core'; constructor(private cdr: ChangeDetectorRef) {} getCommentItem

vue ,v-for循环对象,不是深度克隆? 数据改变了但是页面元素没有更新。问题解决

<div id="app"> <ul > <li v-for="(val,key,idx) in list" > {{key}} {{val}} {{idx}} </li> </ul> </div> <script> var app = new Vue({ el: '#app', created(){ setTimeout(()=>{ this.listp["1&qu

Vue-- 监听路由变化,数据无法更新?

之前写的Vue项目,有个问题困扰了好久.新闻板块有推荐.精华.最新等几个Tab,设想通过切换Tab,改变路由参数(get/news/:tab)去获取对应数据,然后渲染到页面(用的是同一套组件),问题来了:当切换Tab时,数据并没有更新,后来看了Vue-router官网,有这么一句话:提醒一下,当使用路由参数时,例如从 /user/foo 导航到 user/bar,原来的组件实例会被复用.因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效.不过,这也意味着组件的生命周期钩子不会再被调用

vue.js之过滤器,自定义指令,自定义键盘信息以及监听数据变化

一.监听数据变化 1.监听数据变化有两种,深度和浅度,形式如下: vm.$watch(name,fnCb); //浅度 vm.$watch(name,fnCb,{deep:true}); //深度监视 2.实例用法 2.1-1浅度监听:当点击页面,弹出发生变化了,a的值变为1,b的值变为101 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

Vue用router.push(传参)跳转页面,参数改变,跳转页面数据不刷新的解决办法

vue-router同路由$router.push不跳转一个简单解决方案 vue-router跳转一般是这么写: goPage(ParentDeptCode2,DeptCode2,hosName,hosId){ this.$router.push({ path:'/ChoiceTime', query:{ DeptCode:ParentDeptCode2, DeptCode2:DeptCode2, hosName:hosName, hosId:hosId } })} 但是当遇到,需要跳转同页面不

动态加载页面数据的小工具 javascript + jQuery (持续更新)

使用该控件,可以根据url,参数,加载html记录模板(包含json参数对应,以及具体记录位置Index根据参数描述加载对应的属性,并可以根据简单的判断分支加载对应html或者控件)至列表容器内(JQuery选择器字符串)注: 该控件在使用前需引入JQuery框架支持,使用该控件,可极大的减少Ajax列表数据动态加载开发工作的实际工作量. 使用方式: 首先,添加控件引用,并加入Jquery支持 <script src="js/jquery.js"></script&g

vue教程2-08 自定义键盘信息、监听数据变化vm.$watch

vue教程2-08 自定义键盘信息 @keydown.up @keydown.enter @keydown.a/b/c.... 自定义键盘信息: Vue.directive('on').keyCodes.ctrl=17; Vue.directive('on').keyCodes.myenter=13; @keydown.a/b/c.... <input type="text" @keydown.c="show"> 自定义键盘信息: Vue.directi

Entity Framework使用EntityState和Attach来保存数据变化以及更新实体的个别字段

在使用Entity Framework作为ORM来存取数据的过程中,最常规的操作就是对数据对象的更新.本文将会包含如何Attach Entity到一个数据Context中,以及如何使用EntityState字段状态来保存数据变化. 文本参考了如下两篇文章: https://msdn.microsoft.com/en-us/data/jj592676 https://stackoverflow.com/questions/30987806/dbset-attachentity-vs-dbconte