小程序 methods方法互相调用 this.onClickCancel is not a function

背景

做了一个自定义的弹出对话窗口,主要是自定义一些文本颜色。

问题

但是点击按钮事件:取消与确认,调用了同一个接口,然后想着走不同方法,需要调用methods其他方法。然后报错了:

VM1081 WAService.js:2 TypeError: _this.onClickCancel is not a function

 效果:

想着是不是methods方法不能互相调用 。最后发现是自己把方法放在methods:{}外面了。

如下

Component({
  properties: {showModal: true},
  data: {},
  lifetimes: {
    attached() {
      console.log(">>showModal", this.data.showModal)
    }
  },
  onClickCancel(e) {
    console.log('>>点击了取消')
    this.triggerEvent('onclickcancel')
  },
  onClickComfirm(e) {
    console.log("点击了确认")
    this.triggerEvent('onclickcomfirm')
  },
  methods: {
    onClickMask(e) {
      console.log(">>>点击 onClickMask", e)
      console.log(this)
      console.log(">>> methods", this.methods)
      if (e.target.dataset.cancel) {
        this.methods.onClickCancel(e)
        this.setData({
          showModal: false
        })
      } else if (e.target.dataset.comfirm) {
        this.methods.onClickComfirm(e)
        this.setData({
          showModal: false
        })
      }
    } ,
  
  },

});

 解决:

应该把:onClickCancel(), onClickComfirm() 这2个方法放在methods{}里面,

但是放进去之后还是报错。

原因是调用格式语句写错了:

 this.methods.onClickCancel(e)

 this.methods.onClickComfirm(e)

改成:

this.onClickCancel(e)

 this.onClickComfirm(e)

 最终代码

附上自定义弹窗的整个案例源码:

Component({
  properties: {showModal: true},
  data: {},
  lifetimes: {
    attached() {
      console.log(">>showModal", this.data.showModal)
    }
  },
  methods: {
    onClickMask(e) {
      console.log(">>>点击 onClickMask", e)
      console.log(this)
      if (e.target.dataset.cancel) {
        this.onClickCancel(e)
        this.setData({
          showModal: false
        })
      } else if (e.target.dataset.comfirm) {
        this.onClickComfirm(e)
        this.setData({
          showModal: false
        })
      }
    },
    onClickCancel(e) {
      console.log('>>点击了取消')
      this.triggerEvent('onclickcancel')
    },
    onClickComfirm(e) {
      console.log("点击了确认")
      this.triggerEvent('onclickcomfirm')
    }
  },

});
<view clase="modal" wx:if="{{showModal}}">
  <view class="mask" bind:tap="onClickMask">
    <view class="dialog">
      <view class="title">提示</view>
      <view class="content">请确认支付1869.00元</view>
      <view class="btn">
        <view class="cancel" data-cancel >取消</view>
        <view class="sure" data-comfirm >确认</view>
      </view>
    </view>
  </view>

</view>

wxss


.modal {
  position: relative;
  color: #F7F7F7;
  opacity: 0.96;
  z-index: 199;
  width: 100%;
  height: 100%;
  background-color: antiquewhite;
}

/*通过固定位置fixed 来实现页面居中*/
/*.mask {*/
/*  !*height: 100%;*!*/
/*  !*width: 750rpx;*!*/
/*  !*position: fixed;*!*/
/*  !*top: 0;*!*/
/*  !*bottom: 0;*!*/
/*  !*left: 0;*!*/
/*  !*right: 0;*!*/
/*  display: flex;*/
/*  justify-content: center;*/
/*  align-items: center;*/
/*  background-color: rgba(0, 0, 0, 0.2);*/
/*}*/

.mask {
  width: 100%;
  height: 100%;
  z-index: 198;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: rgba(0, 0, 0, 0.8);
  /*background-color: #bfc;*/
}

.dialog {
  width: 600rpx;
  height: 320rpx;
  box-sizing: border-box;
  overflow: hidden;
  background-color: #fff;
  border-radius: 20rpx;
}

.btn {
  height: 100rpx;
  display: flex;
  justify-content: space-evenly;
  flex-direction: row;
  border-top: 1rpx solid #eee;
}

.title {
  width: 100%;
  font-size: 38rpx;
  padding: 28rpx 0 10rpx;
  font-weight: 700;
  text-align: center;
}

.content {
  height: 120rpx;
  box-sizing: border-box;
  font-size: 30rpx;
  overflow: hidden;
  padding: 18rpx 28rpx;
  color: #333333;
  text-align: center;
}

.cancel, .sure {
  line-height: 100rpx;
  box-sizing: border-box;
  width: 50%;
  font-weight: 600;
  font-size: 36rpx;
  text-align: center;
  border-right: 1rpx solid #eee;
}

.cancel {
  color: #959595;
}

.sure {
  color: #F15D21;
}

 运行 :点击取消按钮,与点击确认按钮打印正常了,调用组件的页面收到事件log:

>>点击了取消
 [sm]:7 取消支付

点击了确认
 [sm]:11 >>确认支付

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/47491.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue style中的 scoped 属性

Vue 中存在 scoped 属性&#xff0c;HTML5中也存在一个 scoped 属性&#xff0c;而且&#xff0c;这两者都是针对 css 样式处理的属性&#xff0c;所以很多文章在 解释 Vue scoped 的时候&#xff0c;都会把两者混为一谈&#xff0c;直接进把 HTML5 scoped 的定义搬到 Vue scop…

QT Http协议

文章目录 前言一、HTTP概述二、HTTP的两种模型1.B/S模型2.C/S模型 三、请求报文和响应报文三、调试软件Postman四、QT中的HTTP类五、使用HTTP类请求数据总结 前言 本篇文章来给大家讲解QT中的Http协议&#xff0c;Http协议主要用于网络中数据的请求和响应&#xff0c;那么这篇…

Windows用户如何安装新版本cpolar内网穿透

在科学技术高度发达的今天&#xff0c;我们身边充斥着各种电子产品&#xff0c;这些电子产品不仅为我们的工作带来极大的便利&#xff0c;也让生活变得丰富多彩。我们可以使用便携的电子设备&#xff0c;记录下生活中精彩和有趣的瞬间&#xff0c;并通过互联网方便的与大家分享…

git拉取项目报错:fatal: remote error: Service not enabled

一般是git地址错误&#xff0c;如果是原本就有的项目&#xff0c;看看是不是代码库移动到其他地方了&#xff0c;这个库已经被删除了

leetcode数据结构题解(Java实现)(存在重复元素、最大子数组和、两数之和、合并两个有序数组)

文章目录 第一天217. 存在重复元素53.最大子数组和 第二天1. 两数之和88. 合并两个有序数组 第一天 217. 存在重复元素 题解思路&#xff1a;首先题目需要的是判断数组中是否存在相同的数字&#xff0c;存在返回true,不存在就返回false。 那么显然可以这样做&#xff0c;先进行…

[Tools: Camera Conventions] NeRF中的相机矩阵估计

参考&#xff1a;NeRF代码解读-相机参数与坐标系变换 - 知乎 在NeRF中&#xff0c;一个重要的步骤是确定射线&#xff08;rays&#xff09;的初始点和方向。根据射线的初始点和方向&#xff0c;和设定射线深度和采样点数量&#xff0c;可以估计该射线成像的像素值。估计得到的…

AcWing 3708. 求矩阵的鞍点

输入样例&#xff1a; 3 4 1 2 3 4 1 2 3 4 1 2 3 4输出样例&#xff1a; 1 4 4 2 4 4 3 4 4 #include<bits/stdc.h> using namespace std; const int N1010; int n,m,a[N][N],x[N],y[N],flag1; int main(){scanf("%d%d",&n,&m);for(int i1;i<n;i…

Pure Admin 图标篇

1. 官方图标讲解地址 B站搜索&#xff1a;vue-pre-admin之图标篇&#xff0c;作者“乐于分享的程序员小铭” 2. 实操 1. iconify官网 Icon Sets • Iconify 2. 在build->optimize.ts 中&#xff0c;配置所用的Iconify icon包 如&#xff1a; "iconify-icons/ep&quo…

Mysql- 存储引擎

目录 1.Mysql体系结构 2.存储引擎简介 3.存储引擎特点 InnoDB MyISAM Memory 4.存储引擎选择 1.Mysql体系结构 MySQL整体的逻辑结构可以分为4层&#xff1a; 连接层&#xff1a;进行相关的连接处理、权限控制、安全处理等操作 服务层&#xff1a;服务层负责与客户层进行…

云原生架构的定义

前言&#xff1a; 从技术的角度&#xff0c;云原生架构是基于云原生技术的一组架构原则和设计模式的集合&#xff0c;旨在将云应用中非业务代码的部分进行最大化的剥离&#xff0c;从而让云设施接管应用中原有的大量非功能特性&#xff08;如弹性、韧性、安全、可观测性、灰度…

C++OpenCV(6):图像阈值操作

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 &#x1f506; OpenCV项目地址及源代码&#xff1a;点击这里 文章目录 图像阈值化 图像阈值化 阈值又叫临界值&#xff0c;是指一个效应能够产生的最低值或最高值。 例如我们选择的阈值为125&#xff0c;则…

jQueryAPI

文章目录 1.jQuery 选择器1.1 jQuery 基础选择器1.2 jQuery 层级选择器1.3 隐式迭代1.4 jQuery 筛选选择器1.5 jQuery 筛选方法1.6 jQuery 里面的排他思想1.7 链式编程 2.jQuery 样式操作2.1 操作 css 方法2.2 设置类样式方法2.3 类操作与className区别 3.jQuery 效果3.1 显示隐…

你们公司的【前端项目】是如何做测试的?字节10年测试经验的我这样做的...

前端项目也叫web端项目&#xff08;通俗讲就是网页上的功能&#xff09;是我们能够在屏幕上看到并产生交互的体验。 前端项目如何做测试&#xff1f; 要讲清楚这个问题&#xff0c;先需要你对测试流程现有一个全局的了解&#xff0c;先上一张测试流程图&#xff1a; 测试流程…

1374218-86-6,BHQ10 COOH,具有良好的荧光性能

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ BHQ-10 acid&#xff0c;BHQ-10 COOH&#xff0c;BHQ-10 羧酸 PART1----​产品结构式&#xff1a; PART2----​产品规格&#xff1a; 1.CAS号&#xff1a;1374218-86-6 2.分子式&#xff1a;C23H23N5Na2O8S2 3.分子量&…

Ceph入门到精通- Linux 磁盘管理(block 与 inode)

1 硬盘 block 与 inode 详解 1.1 Sector&#xff08;扇区&#xff09;与 Block&#xff08;块&#xff09; 1&#xff09; 硬盘的最小存储单位&#xff1a;sector&#xff08;扇区&#xff09;&#xff0c;每个扇区储存 512 字节&#xff1b;操作系统会一次性连续读取多个…

uniapp 中 的progress加载进度条 的使用,在 页面显示数据加载的进度条,使用户的使用体验效果更好

学习目标&#xff1a; 学习目标如下&#xff1a; 例如&#xff1a; uniapp 中 的progress加载进度条 的使用&#xff0c;在 页面显示数据加载的进度条&#xff0c;使用户的使用体验效果更好 学习内容&#xff1a; 学习内容如下所示&#xff1a; 相关属性的说明 进度条的显…

k8s安装prometheus

安装 在目标集群上&#xff0c;执行如下命令&#xff1a; kubectl apply -f https://gitee.com/i512team/dhorse/raw/main/conf/kubernetes-prometheus.yml使用 1.在浏览器访问地址&#xff1a;http://master_ip:30000&#xff0c;如下图所示&#xff1a; 2.查看k8s自带的…

Maven项目的两种打包方式-spring-boot-mavne-plugin/maven-jar-plugin

Maven项目的两种打包方式-spring-boot-mavne-plugin/maven-jar-plugin 1. 前言Maven的两种打包方式 2. 流程图3. spring-boor-maven-plugin打包4. maven-jar-plugin/maven-dependency-plugin打包 1. 前言 Maven的两种打包方式 spring-boot-maven-plugin springboot默认打包方…

数据结构 | 基本数据结构——栈

目录 一、线性数据结构 二、栈 2.1 何谓栈 2.2 栈抽象数据类型 2.3 用Python实现栈 2.4 匹配括号 2.5 普通情况&#xff1a;匹配符号 2.6 将十进制数转换成二进制数 3.7 前序、中序和后序表达式 3.7.1 从中序到后序的通用转换法 3.7.2 计算后序表达式 一、线性数据结…

GAMS---典型优化模型和算法介绍、GAMS安装和介绍、GAMS程序编写、GAMS程序调试、实际应用算例演示与经验分享

优化分析是很多领域中都要面临的一个重要问题&#xff0c;求解优化问题的一般做法是&#xff1a;建立模型、编写算法、求解计算。常见的问题类型有线性规划、非线性规划、混合整数规划、混合整数非线性规划、二次规划等&#xff0c;优化算法包括人工智能算法和内点法等数学类优…