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 相关文章推荐
可以文本显示的公告栏的js代码
Mar 11 Javascript
利用jquery操作select下拉列表框的代码
Jun 04 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
js解析与序列化json数据(三)json的解析探讨
Feb 01 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
Jan 23 Javascript
Javascript中字符串相关常用的使用方法总结
Mar 13 Javascript
React操作真实DOM实现动态吸底部的示例
Oct 23 Javascript
详解React开发必不可少的eslint配置
Feb 05 Javascript
vue+element实现批量删除功能的示例
Feb 28 Javascript
在create-react-app中使用sass的方法示例
Oct 01 Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 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
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
javascript self对象使用详解
2016/10/18 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
urllib2自定义opener详解
2014/02/07 Python
python实用代码片段收集贴
2015/06/03 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
如何基于python生成list的所有的子集
2019/11/11 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
大学新学期计划书
2014/04/28 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL