vue更新data无效,页面data没刷新 vue.set
Vue中组件的data是有很多坑的,先普及一下常识:
1.想使用data,必须先在data中创建。(如果不创建就会报错)示例:
<div class="">{{user.Age}}</div>new Vue({el: '#app',data: {user:{Age:25}}
})
2.不能直接修改创建的对象的属性,例如想要给 user 添加一个 name 属性,值是 Jay 。
先来一个添加的错误示例(这是一个大坑,请注意),这样写页面不渲染,但是属性添加到了user对象,所以不会报错。
mounted() { this.user.name='Jay'; } //错误示例
再来几种正确有效的写法
解决方法一:强制刷新数据。 这里用了 $forceUpdate() ,它可以强制刷新数据。
mounted() { this.user.name='Jay'; this.$forceUpdate();
} //正确示例
解决方法二:重写整个对象。因为在 data 里面创建了 user 对象,可以直接修改它,缺点是得重写整个对象。
mounted() { this.user={Age:25,name:'Jay'}
} //正确示例
解决方法三:重要知识点。Vue.set 方法。用于设置对象的属性,它可以解决 Vue 无法检测添加属性的限制,语法格式如下:
Vue.set( target, key, value )
参数说明:
- target: 可以是对象或数组
- key : 可以是字符串或数字
- value: 可以是任何类型
使用代码示例
new Vue({el: '#app',data:{a:{b:1}},mounted() {this.$set(this.a, 'bb', 121);}
})
到这里基本就算讲完,如果感觉已经理解,下面就可以不用看了,下面提供了几个帮助大家更好的理解的demo。
在Vue中,一般只有在data选项中声明的属性(或者是属性的属性)才是具有响应特性的。如果需要在data选项之外对已有属性添加(Vue 不允许动态添加根级响应式属性)具有响应特性的属性,需要用到Vue的set方法。
var vm = new Vue({data: {a: { //a就是根级属性,不可动态添加b: 0 //b就是属性的属性,可以动态添加}}
})
何为响应特性?就是当我们更改data中的值的时候,HTML与之绑定的部分会随之更新的特性。
例1,Vue文档中的例子
var vm = new Vue({data: {a: 1}
})
// `vm.a` 现在是响应式的
vm.b = 2
// `vm.b` 不是响应式的
例1中的a就是在data中声明的具有响应特性的属性,而b就不是。
例2,把上面的例子修改一下
var vm = new Vue({data: {a: {a1:''}},methods: {change: function () {this.a.a1 = "test" //a1就是响应式的this.a.a2 = "testtest" //a2就不是响应式的}}
})
在实际操作中,例2的a2虽然不是响应式的,但他却是可以在HTML部分被渲染更新出来。这里就是一个比较容易掉进去的坑了。由于Vue是异步执行DOM更新,虽然更新的动作是由this.a.a1 = "test"
触发,可动作的完成是在this.a.a2 = "testtest"
之后。
例3,一个更加完整的例子
var vm = new Vue({data: {a: {a1:''}},methods: {change: function () {this.a.a1 = "test" //a1就是响应式的this.a.a2 = "testtest" //a2就不是响应式的var that = this;setTimeout(function () {that.a.a3 = 'new text'; //这里与a2是相同的,却别在于这里的a3并不会被渲染到DOM中that.$set(that.a, 'a4', 'new text'); //这是正确的添加属性的方法that.a = { //这种写法与a2不同,a5可以被更新到DOM中a5: 'hahaha'}}, 1);}}
})
相关文章:

重温Thinking in java
1、高精度 BigInteger、BigDecimal 支持任意大小的数字 不能使用运算符 运算速度相对于int、float稍慢 2、对象作用域 {String s new String("aaa"); } 在}外 此时栈中的引用s已经超出了自己的作用域 便不存在了 但是new String("aaa")这个堆中的对象仍然…

2018 react 大会_React Conf 2018的经验教训
2018 react 大会by Yangshun Tay阳顺泰 React Conf 2018的经验教训 (Lessons Learned at React Conf 2018) I was fortunate to have attended React Conf 2018 thanks to my managers — it was an awesome event. I have been watching past React Conf videos online and i…

删除url中某个参数
这里的url 是指一个网站链接 例如: https://baidu.com?a1&b2 下面看一下封装的代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><script src"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js&q…

【转载】MSXML应用总结 开发篇(下)
原文:http://blog.sina.com.cn/s/blog_48f93b530100eq4b.html 三、查询XML文档节点 这部分属于“读”XML文档并做节点遍历,由于担心加上实例会占用过多的篇幅影响阅读,先在这篇做方法总结,以后有时间再写一篇“实战篇”专门写个实…

d010:盈数、亏数和完全数
题目: 对一个正整数N而言,将它除了本身以外所有的因子加起来的总和为S,如果S>N,则N为盈数,如果S<N,则N为亏数,而如果SN,则N为完全数(Perfect Number)。例如10的因子…

软件开发 理想_我如何在12个月内找到理想的软件工作
软件开发 理想In this talk, Matt Woods shares the 3 cornerstone habits that helped him land his dream software job in just 12 months. These habits paved the way for him to consistently grow as a software developer, balloon his professional network, and easi…

Angular4.0从入门到实战打造在线竞拍网站学习笔记之四--数据绑定管道
Angular4.0基础知识之组件Angular4.0基础知识之路由Angular4.0依赖注入Angular4.0数据绑定&管道 数据绑定 数据绑定允许你将组件控制器的属性和方法与组件的模板连接起来,大大降低了开发时的编码量。 常见的表现形式有: 插值表达式:<h…
给GridView增加求和行
1、在WebForm窗体中,设置GridView的ShowFooter"True" 2、在后台代码中 private int jhrs0,ybrs0;//定义变量 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex > 0) { jhrs Convert.ToInt16(e.Ro…

phpMyAdmin 数据库添加int类型的值时默认设为唯一主键的问题解决
数据库的表中插入了一条数据,再插入数据就插入不进去。 这是我今天在开发数据库的时候,遇到一个问题,经过排查,是数据库的结构有问题,有字段是唯一数据,但是目前还不想设置它的值。 场景环境描述ÿ…

python 类中定义类_Python中的动态类定义
python 类中定义类Here’s a neat Python trick you might just find useful one day. Let’s look at how you can dynamically define classes, and create instances of them as required.这是一个整洁的Python技巧,有一天可能会有用。 让我们看一下如何动态定义…

用自定义方法,传入成绩数组,实现输出考试成绩的成三名
package com.imooc; import java.util.Arrays; //导入Array类包 import java.util.Scanner; //导入Scanner类包 public class Final2 { public static void main(String args[]){Scanner…

EJS 什么是EJS后缀文件 EJS怎么用
一、什么是EJS EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串。 二、为什么要使用EJS 与最初的JavaScript相比较,一些不太了解你的代码的人可以更容易地通过EJS模板代码看得懂你的代码。 让我们放松一下,一起来享受下令人激动的…

一个推荐系统,实现完整的设计-在百度搜索关键词推荐案例
在之前一篇博文中, 有同学在评论中问了个问题: 怎样解决因式分解带来的推荐冷门。热门关键词的问题。 在回答这个问题的时候, 想到了近几年在做搜索推荐系统的过程中, 学术界和工业界的一些差别。 正好近期正在做技术规划…

如何充分利用JavaScript(ES6)中的解构功能
by Joanna Gaudyn乔安娜高登(Joanna Gaudyn) Destructuring was a new addition to ES6. It took inspiration from languages like Python and allows you to extract data from arrays and objects into distinct variables. It might sound like something you’ve done in…

React 开发环境搭建
先来一个 React 官方文档的链接 点击跳转 搭建 React 的前期准备:你的本地环境需要安装 cnpm、node。 注:代码块中的 $ 代表: $后面是在命令行输入的命令,举例 $ npm start 解:实际上是应该打开命令行输入 npm st…

c++中的友元重载
1 语法 返回值类型 operator 运算符名称(形参列表) { 重载实体 } --------->operator和运算符名称在一起构造成新的函数名 2 案例 1 #include <iostream>2 3 using namespace std;4 5 class Complex6 {7 public:8 9 Complex(float x0,float y0) 10 :_…

WPF解析TTF 字体
偶遇需要自己解析 TTF 字体并显示,此做。。。 using System; using System.Collections.Generic; using System.Drawing.Text; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Windows; using System.W…

redux logic_Redux-Logic简介
redux logicby Sam Ollason通过萨姆奥拉森(Sam Ollason) Redux-Logic简介 (An Introduction to Redux-Logic) This article will go through a high-level overview of Redux-Logic. We will look at what is it, why it is needed, how it differs from other Redux middlewa…

[SDOI2009]HH的项链
题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来越长。有一…
DvaJS 入门, 快速上手Dva
为什么要使用Dva? React 没有解决的问题 React 本身只是一个 DOM 的抽象层,使用组件构建虚拟 DOM。 如果开发大应用,还需要解决一个问题。 通信:组件之间如何通信?数据流:数据如何和视图串联起来?路由…

Static、DynamicResource学习笔记一
定义了资源后,我们可以在元素中直接使用该资源,但又分为StaticResource及DynamicResource两种方式。 StaticResource 静态资源在首次创建窗口时一次性的设置完毕,之后源资源对象本身发生的任何变化都会影响到使用该资源的元素,如果…

javascript迭代器_JavaScript迭代器概述
javascript迭代器by Joanna Gaudyn乔安娜高登(Joanna Gaudyn) JavaScript迭代器概述 (An overview of JavaScript iterators) for,for…in和for…of循环之间的区别 (The difference between for, for…in and for…of loops) Iteration might be one of the most c…

knockout学习笔记目录
关于knockout学习系列的文章已经写完,这里主要是做个总结,并且将目录罗列出来,方便查看。欢迎各位大神拍砖和讨论。 总结 kncokout是一个轻量级的UI类库,通过MVVM模式使前端的UI简单话,减少javascript代码的编写。通常…

ant Design Pro 登录状态管理
未登录自动跳转到登录页面,登录成功不跳转回登录页面的实现代码调用流程。 ant Design Pro 是一个企业中后台管理框架,开始做他,第一个肯定是要做登录,下面来看一下它是怎么登录的。 先看路由配置 Authorized.jsx代码࿱…

初级java开发学习路线_成为初级全栈Web开发人员的10分钟路线图
初级java开发学习路线So you have started your journey into the world of web development. But what do you learn first? The Internet is overloaded with a wealth of information about the millions of different technologies that a web developer can know.因此&am…

国外物联网平台初探(四):Ayla Networks
定位 Ayla企业软件解决方案为全球部署互联产品提供强大的工具 功能 Ayla的IoT平台包含3个主要组成部分: (1) Ayla嵌入式代理Ayla Embedded Agents (2) Ayla云服务Ayla Cloud Services (3) Ayla应用库Ayla Application Libraries 设备 开发者使用任何微控制器、操作系…

《英语语法新思维初级教程》学习笔记(一)名词短语
参考资料: 1. 《英语语法新思维初级教程》 ▶ 知识点 ▼ 英语是“固定词序语言(a fixed-word-order language)”。 ▼ 语言的构造级别分五个层次:1. 词(word);2. 短语(phase…

根据数组中对象的属性值排序倒叙
数组中对象的属性值排序倒叙demo function compare(e) {return function (a, b) {var value1 a[e];var value2 b[e];return parseInt(value1) - parseInt(value2);} } var arr[{a:2},{a:3},{a:1}];var arr2 arr.sort(compare(time)).reverse();console.log(arr2) //[{a:3}…

!! javascript_产量! 产量! 生成器如何在JavaScript中工作。
!! javascriptby Ashay Mandwarya ?️??由Ashay Mandwarya提供吗? 产量! 产量! 生成器如何在JavaScript中工作。 (Yield! Yield! How Generators work in JavaScript.) If the title doesn’t already give a hint, we will be discussin…

ACM 竞赛高校联盟 练习赛 第二场 BC
B. 题解: 枚举约数即可,判断n个数能否填约数的整数倍 #include <iostream> #include <cstring> #include <cstdio> using namespace std; typedef long long LL; int main(){LL T, n, m;cin>>T;while(T--){cin>>n>>…