您现在的位置是:网站首页>软件开发>开发终端>uni-appuni-app

组件中不通过$emit改父组件数据,报错

风口下的猪2019-10-31uni-app

简介

 错题症状

项目中做一个关注功能,其在图文组件中。而判断关注与否的isguanzhu数据在父组件中。

子组件

<view class="o-flex o-align-items-center" v-if="item.isguanzhu===false" @tap="guanzhu()">
methods:{
guanzhu(){
this.item.isguanzhu=true;
uni.showToast({
'title':'关注成功'
})
}
}

父组件

data数据的层级结构是newslist>list>isguanzhu

isguanzhu:false,


点击“关注”,然后报错


(即提示要操作的数据 isguanzhu 没有找到)

 错题分析

一般页面引用组件,组件上定义函数方法,要想改变父组件的值。如果不通过方法转交(this.$emit()),是不能操作的。

这个过程中操作父组件中的data数据,自然是报错找不到

 错题解决方案

组件定义方法,传入必要的参数,将整个方法通过this.$emit()交给父组件来处理。

子组件

<view class="o-flex o-align-items-center" v-if="item.isguanzhu===false" @tap="guanzhu(index,index1)">
export default{
props:{
getdata:Object,
index:Number //引入函数中必要的父组件参数,将其传入guanzhu()方法中
},
methods:{
guanzhu(index,index1){
this.$emit('guanzhu',index,index1);
}
}
}

父组件

<listvp :getdata="items.list" :index="index" @guanzhu="guanzhu(arguments)"></listvp>
guanzhu(msg){
this.newslist[msg[0]].list[msg[1]].isguanzhu=true;
uni.showToast({
'title':'关注成功'
})
}


这里有几个非常注意的地方:

(1)特别是父组件data数据是多维情况时,组件要想操作父组件的data数据,需要先从父组件中获取必要的参数

例如本例中

listvp组件想要通过guanzhu()方法来,修改父组件data>newslist>list中的数据isguanzhu,但newslist数据是二维,即要定到isguanzhu,则要newslist [x].list[x].isguanzhu。

那么父组件中的newslist.[x]中的x就需要父组件传给子组件,作为子组件方法的必要参数。

(2)方法有多个参数,将其通过$emit()传给传方法载体对应的方法时,父组件中传方法载体对应的方法一律用arguments作为实参,而methods申明方法时,一律使用形参msg(用其他会报错),其中的参数分别用msg[0]、msg[1]、msg[2]....来表示


很赞哦! (0)

  • 软件开发
  • 素质要求
  • 计算机基础
  • 架构
  • 安全
  • 性能
  • 运维
  • 尾页
  • 数据库
  • 开发终端
  • 语言基础
  • 项目管理
  • 产品设计
  • 系统
  • 工作规范
  • 计算机网络
  • 前端技术栈
  • 数据结构
  • 计算机组成原理
  • 后端技术栈
  • 性能优化
  • 安全设计
  • 常见模块
  • 计算机操作系统
  • 服务器
  • python
  • MySQL
  • thinkphp
  • PHP
  • Java
  • JavaScript
  • Windows
  • Linux
  • 特效
  • indexedDB
  • vue
  • 淘宝联盟
  • Ionic
  • Angular
  • 微信小程序
  • 支付宝小程序
  • uni-app
  • css/sass/less
  • 支付
  • socket
  • 爬虫
  • web性能优化
  • 消息推送
  • CVM
  • sqlite
  • Redis
  • 前端基础
  • 基础
  • element
  • Nginx
  • yii2
  • /ponder/index.php/index/catelist/catelist/cateid/10.html

    相关阅读 (同一栏目)

    << /

    标签云

    站点信息

    • 文章统计:528篇
    • 移动端访问:扫码进入SQ3R