vue.js中使用set方法 this.$set
vue教程中有这样一个注意事项:
第一种具体情况如下:
运行结果:
当利用索引改变数组某一项时,页面不会刷新。解决方法如下:
运行结果:
三种方式都可以解决,使用Vue.set、vm.$set()或者数组的splice方法。
在做项目的过程中,有个发现,先上代码:
第一个数组通过利用下标改变第二项,第二个数组使用$set()方法改变第二项,根据上面的代码,我们会知道:第一个数组的第二项改变不会在页面更新,只有第二个数组的更改会在页面更新。然而结果却是:
两个数组的的改变都在页面更新了。。
也就是说,$set()方法调用时,页面会全部更新一遍。
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Document</title>
- <script src="vue.js"></script>
- <style>
- .blue {
- color: blue;
- }
- </style>
- </head>
- <body>
- <div id="example-1">
- <ul>
- <template v-for="item in items">
- <li>
- {{$index}}.{{ item.msg }}
- <button v-on:click="f5(item)">vm.items.splice(index, 1)</button>
- <button v-on:click="f6(item)">vm.remove</button>
- </li>
- </template>
- </ul>
- <ul>
- <li>
- <button v-on:click="f1">vm.items[0] = {} 失效</button>
- </li>
- <li>
- <button v-on:click="f2">vm.items.$set(0, { childMsg: 'Changed!'}) </button>
- </li>
- <li>
- <button v-on:click="f3">vm.items.length = 0 失效</button>
- </li>
- <li>
- <button v-on:click="f4">vm.items={}</button>
- </li>
- </ul>
- <div class="blue">
- {{$data | json }}
- </div>
- <pre>
- 因为 JavaScript 的限制,Vue.js 不能检测到下面数组变化:
- 直接用索引设置元素,如 vm.items[0] = {};
- 修改数据的长度,如 vm.items.length = 0。
- </pre>
- </div>
- <script>
- var vm = new Vue({
- el: '#example-1',
- data: {
- items: [{
- msg: 'Foo'
- }, {
- msg: 'Bar'
- }, {
- msg: 'George'
- }]
- },
- methods: {
- f1: function() {
- vm.items[0] = {}; // 失效
- },
- f2: function() {
- vm.items.$set(0, {
- childMsg: 'Changed!'
- })
- vm.items.$set(2, {
- msg: 'dongtao!'
- })
- },
- f3: function() {
- vm.items.length = 0; // 失效
- },
- f4: function() {
- vm.items = {}
- },
- f5: function(item) {
- var index = this.items.indexOf(item) //Search an array for the item
- if (index !== -1) {
- this.items.splice(index, 1) //Selects a part of an array, and returns the new array
- }
- },
- f6: function(item) {
- this.items.$remove(item)
- }
- }
- })
- </script>
- </body>
- </html>
vue.js中使用set方法 this.$set的更多相关文章
- vue.js 中使用(...)运算符报错的解决方法
vue.js 中使用(...)运算符报错的解决方法 Syntax Error:Unexpected token(XX:X) }, computed:{ ...mapGetters([ 'pageSiz ...
- vue.js中父组件触发子组件中的方法
知识点:vue.js中,父组件的method中,触发子组件中的方法,获得子组件中的定义的属性 (1)子组件 : child_crud.js var html_child_crud= "< ...
- vue.js中,input和textarea上的v-model指令到底做了什么?
v-model是 vue.js 中用于在表单表单元素上创建双向数据绑定,它的本质只是一个语法糖,在单向数据绑定的基础上,增加了监听用户输入事件并更新数据的功能: 对,它本质上只是一个语法糖,但到底是一 ...
- 实例分析Vue.js中 computed和methods不同机制
在vue.js中,有methods和computed两种方式来动态当作方法来用的 1.首先最明显的不同 就是调用的时候,methods要加上() 2.我们可以使用 methods 来替代 comput ...
- Vue.js中使用select选择下拉框
在Vue.js中使用select选择下拉框有两种方法: 第一种: Add.html: <select v-model="sysNotice.noticeType" id=&q ...
- vue.js 中双向绑定的实现---初级
1. 1 我们看到的变量,其实都不是独立的,它们都是windows对象上的属性 <!DOCTYPE html> <html lang="en"> <h ...
- 浅析Vue.js 中的条件渲染指令
1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件. html: <div id="app"> < ...
- vue.js 中 data, prop, computed, method,watch 介绍
vue.js 中 data, prop, computed, method,watch 介绍 data, prop, computed, method 的区别 类型 加载顺序 加载时间 写法 作用 备 ...
- angular.js和vue.js中实现函数去抖(debounce)
问题描述 搜索输入框中,只当用户停止输入后,才进行后续的操作,比如发起Http请求等. 学过电子电路的同学应该知道按键防抖.原理是一样的:就是说当调用动作n毫秒后,才会执行该动作,若在这n毫秒内又调用 ...
随机推荐
- net5 webapi中 SwaggerUI如何进行版本控制
创建项目 net5就自带上了swaggerUI,见红色 // This method gets called by the runtime. Use this method to add servic ...
- Thinkphp3分析与审计
0x00 前言: 这篇是去年组内分享的时候给小伙伴写的0基础快速审计tp3系列的文章,主要是对架构做个分析以及审计一些sql注入漏洞~ 现在想想打算放出来,过了一年了,可能里面有一些问题,望看到的大佬 ...
- springboot整合持久层技术(mysql驱动问题)
java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more tha ...
- P2055 [ZJOI2009]假期的宿舍 题解(二分图)
题目链接 P2055 [ZJOI2009]假期的宿舍 解题思路 因为懒,提供一种不连边,直接根据题目给出的邻接矩阵进行匈牙利算法的思路. \(a[i][j]\)表示\(i\)能不能睡\(j\)的床,需 ...
- 2019 GDUT Rating Contest II : Problem C. Rest Stops
题面: C. Rest Stops Input file: standard input Output file: standard output Time limit: 1 second Memory ...
- golang 实现距离幂算法
func main() { var test []Pow var x1 Pow x1.distance = 110 x1.grade = 0.31 var x2 Pow x2.distance = 8 ...
- .NetCore 导出Execl
/* Nuget - NPOI.2.5.1 */ using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.XSSF.UserMode ...
- Linux wget 使用笔记
wget 是 Linux 上最常用的文件下载工具,简单实用.记录一下一些常用的操作备查. 最常用最简单的操作就是直接使用一个 URL 下载 下载互联网上指定的文件 wget https://gemme ...
- Harry And Magic Box HDU - 5155
题目链接:https://vjudge.net/problem/HDU-5155#author=0 题意:在一个n*m的方格中要满足每一行每一列至少有一个珠宝,问总共有多少种方案. 思路:利用递推的思 ...
- java 基础知识储备
初始JAVA JAVA 帝国的诞生 1972年C诞生 贴近硬件,运行极快,效率极高. 操作系统,编译器,数据库,网络系统等 指针和内存管理 1982年C++诞生 面向对象 兼容C 图形领域.游戏等 纵 ...