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 相关文章推荐
JavaScript学习笔记(十)
Jan 17 Javascript
JS函数实现动态添加CSS样式表文件
Dec 15 Javascript
Jquery实现图片左右自动滚动示例
Sep 25 Javascript
JS去除字符串两端空格的简单实例
Dec 27 Javascript
基于jQuery实现仿51job城市选择功能实例代码
Mar 02 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
Aug 05 Javascript
AngularJS实现单独作用域内的数据操作
Sep 05 Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 Javascript
网页瀑布流布局jQuery实现代码
Oct 21 Javascript
JavaScript模板引擎Template.js使用详解
Dec 15 Javascript
Angularjs单选框相关的示例代码
Aug 17 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
Apr 07 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变量作用域以及地址引用问题
2013/12/27 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
用python 制作图片转pdf工具
2015/01/30 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Python如何根据时间序列数据作图
2020/05/12 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
团组织关系介绍信
2014/01/12 职场文书
经销商培训邀请函
2014/01/21 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
奠基仪式致辞
2015/07/30 职场文书
给学校的建议书400字
2015/09/14 职场文书