vue 子组件修改data或调用操作


Posted in Javascript onAugust 07, 2020

<子组件 ref='xxx'></子组件>

父组件:

this.refs.xxx.子组件定义的方法()

外部:

vm.$refs.xxx.子组件定义的方法()

注意:子组件添加 ref 属性,父组件才可以通过 refs 获取.

补充知识:vue更新data值,如何重新渲染组件?

一:先介绍一下Vue.set()方法

注:如果从服务端返回的数据量较少,或者只有几个字段,可以用vue的set方法,如果数据量较大,请直接看第二种情况。

官网API是这样介绍的:

Vue.set(target,key,value)

参数:

{Object | Array} target

{string | number} key

{any} value

返回值:设置完后的新值

用法:

向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = ‘hi')

注意对象不能是 Vue 实例,或者 Vue 实例的根数据对象。

我举个简单的小例子,把这种用法介绍一下:

一:data中定义一个对象:

data() {
 return {
  person:{
  age:10,
  name:'李古拉雷',
  sex:1
  }
 }
}

二:从服务端发起请求返回新数据对象:

person:{
 age:20,
 name:'高圆圆',
 sex:0
}

这时需要把这个对象实时渲染到页面中去

三:用 Vue.set()方法更新数据

如下所示:

methods: {
 getPerson(){
  this.$http({
  method: "post",
  url:this.$$baseURL + "sys/getPerson",
 }).then(res => {
  Vue.set(this.person,0,{age:res.data.age,name:res.data.name,sex:res.data.sex})
/**
* 0 更新的是位置0上的数据
*
*/
});
}
}

这样从服务端返回的新数据就实时更新到组件上了。

下面说一下第二种情况:

这种情况就是数据量较大,字段较多的,使用Vue.set()方法就有点过分了,这时我们应该怎么做呢?

核心思想就是定义一个临时变量,因computed 是计算属性,这里面的值更细可以实时渲染组件更新页面。

一:我们在data中定义一个很大的临时对象

data() {
 return {
 myTempObj:{} // 这时一个很大的临时对象,字段特别多
 }
}

二:我们在计算属性中也定义一个很大的对象

这个对象是我们在页面中真正用到的对象

computed: {
 myObj: {
  get: function(){
  return this.myTempObj; // 在这里把临时对象的值通过计算属性赋值给页面中用到的对象
  }
 },
}

三:发起异步请求,从服务端返回数据

methods: {
 getBigObj(){
  this.$http({
  method: "post",
  url:this.$$baseURL + "sys/getBigObj",
 }).then(res => {
  this.myTempObj=res.bigObj ; // 在这里用临时变量接受服务端返回值
});
}
}

四:页面模板组件中使用方法

<div class="brand-list bybrand_list" v-for="(item, index) in myObj" :key="index">
 {{item.name}}
</div>

以上两种情况都可以解决从服务端取到的数据不能实时更新问题,根据具体情况选择使用!希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery zTree异步加载简单实例分享
Feb 05 Javascript
一个不错的字符串转码解码函数(自写)
Jul 31 Javascript
基于jQuery实现的图片切换焦点图整理
Dec 07 Javascript
JavaScript运动减速效果实例分析
Aug 04 Javascript
js操作数组函数实例小结
Dec 10 Javascript
javascript显示上周、上个月日期的处理方法
Feb 03 Javascript
原生js实现addclass,removeclass,toggleclasss实例
Nov 24 Javascript
详解Angular 4.x 动态创建组件
Apr 25 Javascript
vue中路由参数传递可能会遇到的坑
Dec 07 Javascript
关于单文件组件.vue的使用
Sep 20 Javascript
微信小程序登录时如何获取input框中的内容
Dec 04 Javascript
vue移动端的左右滑动事件详解
Jun 17 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
Aug 07 #Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
Aug 07 #Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 #Javascript
javascript前端和后台进行数据交互方法示例
Aug 07 #Javascript
javascript解析json格式的数据方法详解
Aug 07 #Javascript
Vue触发input选取文件点击事件操作
Aug 07 #Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
Aug 07 #Javascript
You might like
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
php常用hash加密函数
2014/11/22 PHP
Symfony的安装和配置方法
2016/03/17 PHP
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
Python3 max()函数基础用法
2019/02/19 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
python计算无向图节点度的实例代码
2019/11/22 Python
python中提高pip install速度
2020/02/14 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
最新创业融资计划书
2014/01/19 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
文明班级申报材料
2014/12/24 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
入团申请书格式
2019/06/20 职场文书
matplotlib画混淆矩阵与正确率曲线的实例代码
2021/06/01 Python