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怎样实现ajax联动框(一)
Mar 08 Javascript
纯js实现仿QQ邮箱弹出确认框
Apr 29 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
Nov 06 Javascript
js创建jsonArray传输至后台及后台全面解析
Apr 11 Javascript
jQuery中队列queue()函数的实例教程
May 03 Javascript
浅谈Web页面向后台提交数据的方式和选择
Sep 23 Javascript
express文件上传中间件Multer详解
Oct 24 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
Dec 15 Javascript
初探JavaScript 面向对象(推荐)
Sep 03 Javascript
javascript中UMD规范的代码推演
Aug 29 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
Aug 31 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
Jul 31 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
重置版宣传动画
2020/04/09 魔兽争霸
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
PHP四大安全策略
2014/03/12 PHP
php中file_exists函数使用详解
2015/05/08 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
使用python实现strcmp函数功能示例
2014/03/25 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
pycharm设置注释颜色的方法
2018/05/23 Python
python实现机器学习之多元线性回归
2018/09/06 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
自考自我鉴定范文
2013/10/30 职场文书
医科学校毕业生自荐信
2013/11/09 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
个人求职意向书
2015/05/11 职场文书
初中毕业生感言
2015/07/31 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
竞聘书的秘诀
2019/04/02 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python