vue.set的使用和vue数据的序列化

  首先简单说一下vue双向数据绑定在实际应用上会有一点异常。

  1.比如我想使用一个数组内部数据的改变,直接使用arr[0]=‘bbbb’,这样是不会触发数据绑定的。视图不会变化。

  2.这个问题就纯是js的问题了。。我们需要把一个json数据的值赋值给另一个,当我们改变另一个数据内部的数据时。第一个也会跟着改变

一、首先对于问题一,官方已经给了很好的解释。怪就怪在我没有仔细看文档吧。记录一下涨个记性。

<template>
  <div class="hello">
      <ul>
        <li v-for="(item,index) in arr1" :key="index">
          {{item}}
        </li>
      </ul>
      <input type="button" @click="index" value="改变数据">
  </div>
</template>

//以下为script代码
data () {
    return {
      arr1:[‘wwwww‘,‘hhhhh‘,‘aaaaa‘,‘ttttt‘]
    }
  },
  methods:{
    index(){
      // 1.使用数组特定方法。
      // this.arr1.shift();
      // this.arr1.unshift(‘bbbbb‘);

      // 2.这个方法和之前的差不多。
      //this.arr1.splice(0,1,‘bbbbb‘);

      // 3.使用源生的set方法,但是和splice用法一样。我看了一下源码。其实就使用了splice来直接使用了。还不如直接用splice方便些
      this.vm.$set(this.arr1,0,‘bbbbb‘)

      console.log(this.arr1);
    }
  }

  对了 需要注意一下,我使用的是使用vue-cli创建了一个项目直接写的测试。和网上很多人写的直接生成vue实例有一些区别的。

  以上的代码中,方法3是不能直接使用的。因为不同文件内部调用这个set方法有一些区别的。所以我们需要在外部的main.js内部添加这样一行代码

Vue.prototype.vm=Vue.prototype;

  否则调用会出现问题。

二、对于方法一,我们确实可以使用深克隆等方法去实现该种效果。但是还有一种方便的方法,使用js的序列化。

例如:

<template>
  <div class="hello">
      <ul>
        <li v-for="(item,index) in arr1" :key="index">
          {{item}}
        </li>
      </ul>
      <input type="button" @click="index" value="改变数据">
  </div>
</template>

data () {
    return {
      arr1:{a:‘a‘,b:‘b‘,c:‘c‘},
      arr2:{}
    }
  },
  methods:{
    index(){
      this.arr2=this.arr1;
      //this.arr2=JSON.parse(JSON.stringify(this.arr1));//序列化
      this.arr2.a=‘c‘;
      console.log(this.arr1);
      console.log(this.arr2);
    }
  }

  通过json.stringify和parse就可以达到这样的效果,避免修改arr2的时候修改了arr1。

vue.set的使用和vue数据的序列化

原文地址:https://www.cnblogs.com/acefeng/p/9094213.html

时间: 2024-11-10 13:59:01

vue.set的使用和vue数据的序列化的相关文章

详解vue父组件传递props异步数据到子组件的问题

案例一 父组件parent.vue // asyncData为异步获取的数据,想传递给子组件使用 <template> <div> 父组件 <child :child-data="asyncData"></child> </div> </template> <script> import child from './child' export default { data: () => ({ as

vue实战使用ajax请求后台数据(小白)

vue实战使用ajax请求后台数据(小白) 前言:前端小白入门到这个阶段,应该会知道我们所做的页面上那些数据,绝大部分都不是静态的数据,而是通过调用后台接口把数据渲染到页面上的效果.ajax可以帮助我们更好的去实现这一点,下面是详解在vue中如何使用它. vue本身它是不支持直接发送ajax请求的,需要用到axios(一个基于promise的HTTP库,可以用在浏览器和node.js中)这是Axios文档的介绍,详细可查看:https://www.kancloud.cn/yunye/axios/

vue源码之响应式数据

分析vue是如何实现数据响应的. 前记 现在回顾一下看数据响应的原因. 之前看了vuex和vue-i18n的源码, 他们都有自己内部的vm, 也就是vue实例. 使用的都是vue的响应式数据特性及$watchapi. 所以决定看一下vue的源码, 了解vue是如何实现响应式数据. 本文叙事方式为树藤摸瓜, 顺着看源码的逻辑走一遍, 查看的vue的版本为2.5.2. 目的 明确调查方向才能直至目标, 先说一下目标行为: vue中的数据改变, 视图层面就能获得到通知并进行渲染. $watchapi监

vue学习记录:vue引入,validator验证,数据信息,vuex数据共享

最近在学习vue,关于学习过程中所遇到的问题进行记录,包含vue引入,validator验证,数据信息,vuex数据共享,传值问题记录 1.vue 引入vue vue的大致形式如下: <template> </template> <script> </script> <style> </style> 要引入其他vue ,需要 import <template> <div> <Header></

用Vue构建一个github“可视化大数据平台”-GitDataV,设计开发分享

写在前面 GitDataV,是一个github“大数据可视化平台”,通过它你可以更直观的看到你在github里的一些数据,(之所以打双引号,是因为我觉得这个还没到大数据可视化的程度).其实我在 上篇文章 分享的时候已经提到了这个想法,通过github提供的接口,做一个自己的“大数据分析页面”,所以我就花了几天晚上的时间,把这想法从设计到开发构建出来了,那么下面我就我个人的账号测试看看效果如下gif图 如果您感兴趣可以点击这里访问简单的:GitDataV网站(目前打包后有些小bug,但不影响正常使

Vue框架(一)——Vue导读、Vue实例(挂载点el、数据data、过滤器filters)、Vue指令(文本指令v-text、事件指令v-on、属性指令v-bind、表单指令v-model)

Vue导读 1.Vue框架 vue是可以独立完成前后端分离式web项目的js框架 三大主流框架之一:Angular.React.Vue vue:结合其他框架优点.轻量级.中文API.数据驱动.双向绑定.MVVM设计模式.组件化开发.单页面应用 Vue环境:本地导入和cdn导入 2.Vue是渐进式js框架 通过对框架的了解与运用程度,来决定其在整个项目中的应用范围,最终可以独立以框架方式完成整个web前端项目.3.怎么使用vue 去官网下载然后导入 <div id="app">

十、Vue:Vuex实现data(){}内数据多个组件间共享

一.概述 官方文档:https://vuex.vuejs.org/zh/installation.html 1.1vuex有什么用 Vuex:实现data(){}内数据多个组件间共享一种解决方案(类似react的redux) 1.2什么情况下使用vuex 虽然 Vuex 可以帮助我们管理共享状态,但也附带了更多的概念和框架.这需要对短期和长期效益进行权衡. 如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的.确实是如此--如果您的应用够简单,您最好不要使用 Vuex.一个简单的 gl

Vue服务端渲染和Vue浏览器端渲染的性能对比

Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司做Vue项目的时候,一直苦于产品.客户对首屏加载要求,SEO的诉求,也想过很多解决方案,本次也是针对浏览器渲染不足之处,采用了服务端渲染,并且做了两个一样的Demo作为比较,更能直观的对比Vue前后端的渲染. talk is cheap,show us the code!话不多说,我们分别来看两个D

实例PK(Vue服务端渲染 VS Vue浏览器端渲染)

Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司做Vue项目的时候,一直苦于产品.客户对首屏加载要求,SEO的诉求,也想过很多解决方案,本次也是针对浏览器渲染不足之处,采用了服务端渲染,并且做了两个一样的Demo作为比较,更能直观的对比Vue前后端的渲染. 话不多说,我们分别来看两个Demo:(欢迎star 欢迎pull request) 1.浏