0

0

Vue.set如何实现视图随着对象修改而动态变化(可多选)

不言

不言

发布时间:2018-08-15 14:55:33

|

2391人浏览过

|

来源于php中文网

原创

本篇文章给大家带来的内容是关于vue.set如何实现视图随着对象修改而动态变化(可多选),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

通过数组的变异方法我们可以让视图随着数据变化而变化。但Vue 不能检测对象属性的添加或删除,即如果操作对象数据变化,视图是不会随着对象数据变化而变化的。使用Vue.set()可以帮助我们解决这个问题。

需求:

可多选的列表:

534673353-5b729d61d62f8_articlex.png

341431037-5b729f3ee02b8_articlex.png

立即学习前端免费学习笔记(深入)”;

初始代码:

准备好的数据:

 tag: [
        { name: "马化腾" },
        { name: "马云" },
        { name: "刘强东" },
        { name: "李彦宏" },
        { name: "比尔盖茨" },
        { name: "扎克伯格" }
      ],

template&CSS:

    //梦想通过判断每个item的checked的布尔值来决定选中或未选中
  • {{item.name}}

.choice-tag-check{ border: 1px solid #2d8cf0 !important; color: #2d8cf0 !important; }

一开始的想法是将静态数据(或网络请求的数据)添加一个新的字段,通过修改checked为true或false来判断选中状态。

mounted() {
    for(let i = 0 ; i

console.log(this.tag)一下

1552927370-5b72a3040f089_articlex.png

都添加上了,感觉一切顺利,有点美滋滋。

选择方法methods:

 //选择标签
choiceTagFn(index) {
  if(this.tag[index].checked === false){
    this.tag[index].checked = true
  }else{
    this.tag[index].checked = false
  }
},

随便选两个,然后再console.log(this.tag)一下

1742743632-5b72a4f655e2b_articlex.png

数据层tag的checked值已经发生改变,然鹅~~~

534673353-5b729d61d62f8_articlex.png

视图层是一动不动,说好的响应式呢?

查阅文档后找到了原因:由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除

墨狐AI
墨狐AI

5分钟生成万字小说,人人都是小说家!

下载

那怎么办?官方的说法是:对于已经创建的实例,Vue 不能动态添加根级别的响应式属性。但是,可以使用 Vue.set(object, key, value) 方法向嵌套对象添加响应式属性。

今天的主角就是:Vue.set()

Vue.set( object, key, value )

object:需要更改的数据(对象或者数组)

key:需要更改的数据

value :重新赋的值

更改后的代码

我们不再使用for来给对象添加字段,而是使用一个新的数组来展示选中与未选中状态

新的数据:

 tag: [
        { name: "马化腾" },
        { name: "马云" },
        { name: "刘强东" },
        { name: "李彦宏" },
        { name: "比尔盖茨" },
        { name: "扎克伯格" }
      ],
 //是否选中
 tagCheck:[false,false,false,false,false,false],

我们就不再直接操作数据,而是操作新的数组

新的template&CSS:

  • {{item.name}}

新的选择方法methods:

我们可以使用this.$set来代替Vue.set

 //选择标签
choiceTagFn(index) {
  if(this.tagCheck[index] === false){
    //(更改源,更改源的索引,更改后的值)
    this.$set( this.tagCheck, index, true )
  }else{
    //(更改源,更改源的索引,更改后的值)
    this.$set( this.tagCheck, index, false )
  }
},

就大功告成啦实现了列表多选,视图会根据数据(数组,对象)的变化而变化。

相关推荐:

Vue制作图片轮播

vue如何操作静态图片和网络图片

Zend Framework 视图中使用视图

ThinkPHP框架之视图

相关专题

更多
菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

0

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

56

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

51

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

397

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

118

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

11

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 9.1万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.8万人学习

Vue 教程
Vue 教程

共42课时 | 7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号