微信小程序之公共组件写法

微信小程序 --- 自定义组件 组件介绍小程序目前已经支持组件化开发,可以将页面中的功能模块抽取成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。公共组件:将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用页面组件:将复杂的页面拆分成多个低耦合的模块,有助于代码维护如果是公共组件,建议将其放在小程序的目录下的components文件夹中如果是页面组件,建议将其放在小程序对应页面目录下,当然你也可以放到页面的components文件夹中。 阅读详情

我们要实现如下图功能

小程序一个公共的弹出组件,首先我们创建一个pop文件

然后在生成的pop.json文件中将component定义为true

{
  "component": true
}

为pop.wxml添加内容

<!--pages/common/pop/pop.wxml-->
<view class='wx_dialog' hidden="{{!isShow}}">
  <view class='wx-mask'></view>
  <view class='wx-dialog-content'>
    <view class='wx-dialog-title'>{{ title }}</view>
    <view class='wx-dialog-contents'>{{ content }}</view>
    <view class='wx-dialog-footer'>
      <view class='wx-dialog-btn' catchtap='_cancelEvent'>{{ cancelText }}</view>
      <view class='wx-dialog-btn' catchtap='_confirmEvent'>{{ confirmText }}</view>
    </view>
  </view>
</view>

pop.wxss

/* pages/common/pop/pop.wxss */
.wx_dialog {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
}
.wx-mask {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, .3);
  z-index: 99;
}
.wx-dialog-content {
  position: absolute;
  background: #fff;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 80%;
  /* height: 200px; */
  padding-bottom: 60px;
  z-index: 100;
  border-radius: 5px;
}
.wx-dialog-contents {
  padding: 10px;
}
.wx-dialog-title {
  padding: 5px 10px;
  font-size: 14px;
}
.wx-dialog-footer {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  font-size: 14px;
  height: 40px;
  line-height: 40px;
  border-top: 1px solid #eee;
}
.wx-dialog-btn {
  display: inline-block;
  width: 49%;
  cursor: pointer;
  text-align: center;
}
.wx-dialog-btn:first-child {
  border-right: 1px solid #eee;
}

pop.js

// pages/common/pop/pop.js
Component({ 
  options: { 
    multipleSlots: true // 在组件定义时的选项中启用多slot支持 
  }, 
  /** 
   * 组件的属性列表 
   * 用于组件自定义设置 
  */ 
  properties: {
    // 弹窗标题 
    title: { // 属性名 
      type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型) 
      value: '标题' // 属性初始值(可选),如果未指定则会根据类型选择一个 
    }, 
    // 弹窗内容 
    content: { type: String, value: '弹窗内容' }, 
    // 弹窗取消按钮文字 
    cancelText: { type: String, value: '取消' }, 
    // 弹窗确认按钮文字 
    confirmText: { type: String, value: '确定' } 
  }, 
  /** 
   * 私有数据,组件的初始数据 
   * 可用于模版渲染 
   */ 
  data: { // 弹窗显示控制 
    isShow: false
  }, 
  /**
   * 组件的方法列表 
   * 更新属性和数据的方法与更新页面数据的方法类似 
  */ 
  methods: { 
    /** 
    * 公有方法 
    */
    //隐藏弹框 
    hideDialog() { 
      this.setData({ 
        isShow: !this.data.isShow 
      }) 
    }, 
    //展示弹框 
    showDialog() { 
      this.setData({ 
        isShow: !this.data.isShow 
      }) 
    }, 
    /** 
     * 内部私有方法建议以下划线开头 
     * triggerEvent 用于触发事件 
    */ 
    _cancelEvent() { //触发取消回调 
      this.triggerEvent("cancelEvent") 
    }, 
    _confirmEvent() { //触发成功回调 
      this.triggerEvent("confirmEvent"); 
    } 
  } 
})

在父级页面的.js文件中添加

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    this.dialog = this.selectComponent("#dialog"); 
  },
  showDialog() {
    this.dialog.showDialog();
  },
  //取消事件 
  _cancelEvent() {
    console.log('你点击了取消');
    this.dialog.hideDialog();
  }, 
  //确认事件 
  _confirmEvent() {
    console.log('你点击了确定');
    this.dialog.hideDialog();
  },

父级页面的.json文件中添加

{
  "usingComponents": {"pop": "../common/pop/pop"}
}

 

在父级页面的.wxml文件中添加

  <view class="pop"> 
    <pop id='dialog' title='我是标题' content='恭喜你,学会了小程序组件' cancelText='知道了' confirm='谢谢你' bind:cancelEvent="_cancelEvent" bind:confirmEvent="_confirmEvent">
    </pop>
  </view>

然后就大功告成了

这个是我自己写的基于百度AI实现的小程序,有兴趣的可以看一下

别只当玩具!聊聊这个555金属探测器电路背后的电磁感应与RLC调谐原理 本文深入解析了555金属探测器电路的工作原理,重点探讨了电磁感应与RLC调谐原理。通过分析电感线圈的电磁特性、RLC谐振电路的行为以及555定时器的多重功能,揭示了这一看似简单的装置如何实现金属检测。文章还提供了灵敏度优化方案和常见问题解决方法,帮助读者从科学角度理解这一实用技术。 阅读详情

相关推荐

CST仿真微带贴片天线学习笔记

谐振频率为3.48GHz,基板采用Rogers RT5880板材,介电常数2.2,损耗角正切0.0009,厚度1.57mm,馈电方式为同轴馈电。

qq_36521926的博客 9432

小程序开发-封装自定义弹窗组件

创建自定义组件文件夹和文件:在小程序项目的目录结构中,创建一个文件夹用于存放自定义组件,例如components文件夹。在该文件夹中创建一个新的文件,例如,用于存放自定义弹窗组件的代码。编写自定义组件代码:打开文件,编写自定义弹窗组件的代码。

一步一个脚印,踏实努力,向着目标前进 1748

法律AI工具横评:Kimi Work与WorkBuddy,谁更适合法律人?

在人工智能技术日益普及的今天,自然语言处理(NLP)和大语言模型(LLM)正深刻改变着专业领域的工作范式。其核心原理在于通过海量数据训练,使模型能够理解、生成和推理人类语言。这一技术价值在于将从业者从繁琐、重复的信息处理工作中解放出来,极大提升工作效率与知识获取的便捷性。在法律、金融、咨询等对文本处理要求极高的行业,AI助手已展现出在文档分析、信息检索和内容生成方面的巨大潜力。具体到法律应用场景,AI工具能够辅助完成合同审查、法律检索和文书起草等核心任务,成为专业人士的得力助手。本文聚焦于近期备受关注的两款

weixin_30279671的博客 559

【小程序开发】—— 封装自定义弹窗组件

小程序项目实战——封装自定义弹窗组件,确定不来看看吗?

qq_49002903的博客 4万+

Innovus Function ECO实战:5步搞定数字后端设计中的网表修正(含Calibre LVS验证技巧)

本文提供了一份完整的Innovus Function ECO实战指南,详细解析了数字后端设计中网表修正的五步流程。从理解Function ECO概念、准备关键文件,到在Innovus中执行逻辑比对、自动布线及GUI检查,并重点攻克了ECO后Calibre LVS验证的难点与调试技巧,帮助工程师高效、精准地完成流片前的设计微调。

day7的博客 948

R语言实战:非正态数据下的Scheirer–Ray–Hare检验全流程解析

本文详细解析了在R语言中执行Scheirer–Ray–Hare检验的全流程。当数据不满足正态分布假设时,该非参数检验是传统双因素方差分析的有效替代方案。文章从原理、R环境配置、数据准备、代码实现、结果解读到事后比较与可视化,提供了完整的实战指南,帮助研究者稳健地分析多因素实验设计中的主效应和交互效应。

cc789的博客 406

微信小程序——弹窗组件

1、父组件.wxml。2、父组件.json。3、子组件.wxml。4、子组件.wxss。

weixin_58412143的博客 2850

Redis+Unity 数据库搭建

游戏中需要存放排行榜等数据,而且是实时存放,所以就涉及到数据库的问题。这里找服务器大神了解到可以用Redis来做存储,免费的效率极高。

chaixinke的专栏 879

微信小程序自定义组件(超详细)

(1)在项目根目录中,鼠标右键创建 components 文件夹 (2)右击components文件夹,创建item文件夹 (3)右击item文件夹,点击新建Component,输入item (今天要介绍的是关于`小程序自定义组件`的相关内容。 > 主要分以下几个部分:组件的创建,组件的结构,组件的引用,组件样式,组件的生命周期等。

m0_55734030的博客 1万+

数值天气预报期末复习

数值天气预报期末复习

m0_60394632的博客 7678

UNet改进(12):融合小波变换与注意力机制的图像分割新方法

本文提出了一种改进的WaveletAttentionUNet架构,通过结合小波变换和注意力机制来增强传统UNet的多尺度特征提取能力。该网络使用分组卷积模拟小波分解,将输入通道扩展为4个子带(LL、LH、HL、HH),并通过通道注意力机制自适应加权各子带特征。网络保留了UNet的编码器-解码器结构,在关键位置集成了WaveletAttention模块。实验证明该方法在医学图像分割等任务中能更好地保持边缘细节和复杂纹理特征,同时保持计算效率。

2501_91516851的博客 758

微信小程序公共组件封装使用

微信小程序公共组件使用

lxc的点点滴滴 794

流体动力学仿真软件:Star-CCM+_(15).用户自定义函数与模型

用户自定义函数(User-Defined Functions, UDFs)允许用户编写自己的函数,并在仿真中调用这些函数。UDFs可以用于定义复杂的边界条件、源项、材料属性等。Star-CCM+支持多种编程语言,包括C++、Fortran和Java等,其中最常用的语言是Java。用户自定义模型(User-Defined Models, UDMs)允许用户在仿真中引入自定义的物理模型。这些模型可以用于描述流体行为、化学反应、多相流等复杂现象。Star-CCM+提供了丰富的API来支持UDMs的开发。

kkchenjj的博客 554

微信小程序–自定义公共组件

微信小程序–自定义公共组件 存放位置:component/自定义组件名-称文件夹 使用方法:在页面的json文件中,然后在页面以标签形式使用 { "usingComponents": { "searchInput": "../../component/searchInput/searchInput", "tabs": "../../component/tabs/tabs" }, "navigationBarTitleText": "商品列表" } 搜索框:searchInput

无知者无畏 610

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

微信小程序中公共组件的使用

小程序公共组件创建,导入及使用 使用页面 <van-tabs active="{{ active }}" bind:change="onChange" title-inactive-color="#c5c8ce"> <van-tab title="线上课程" > 1.<onLine show="show" onLineList="{{onLineList}}" studentId="{{studentId}}" projectLev

各位看官欢迎来到webshao,点个赞支持下咯! 1021

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

微信小程序 - 类似element puls中tabs标签页的小封装及公共组件的使用

第一步 : 先在全局目录下新建一个 components 的文件夹以及该文件夹下的公共组件所需的一些文件 (xx.wxml xx.wxss xx.js xx.json)"usingComponents": { // 需要注册的公共组件都在这个对象下以相同的方式书写就可以啦。第二步 : 可以全局中的 app.json 文件中注册使用 也可以单独在某一个组件的 json 文件中使用。第三步 : 在需要的地方使用即可。话不多说 , 效果图和代码齐上。

weixin_68341137的博客 464

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

微信小程序如何引入公共组件

在原生小程序开发里面,在componets里面写好的公共组件如果向引用,需要在想引入的页面的json文件中 //想要使用自定义公共组件首先要在页面的 json 文件中进行引用声明。 //此时需要提供自定义组件的标签名和对应的自定义组件文件路径: { "usingComponents": { "component-tag-name": "path/to/the/custom/component" } } ...

前端路上坎坎坷坷,总有一天站在顶峰仰望世界!!! 2405

微信小程序之公共组件

首先我们要创建一个公共组件 然后在login.json文件中将component定义为true { "component": true, "usingComponents": {} } 在login.wxml添加内容 <!-- 登录 --> <van-popup show="{{ show }}" position="top" custom-style="height: 60%;" close-on-click-overlay="{{true}}" >

Wang_kaiya的博客 958

微信小程序 将一个组件注册为全局公共组件

我们可以在小程序 根目录的app.json中设置usingComponents属性来完成。通常我们小程序使用组件 需要在对应使用组件的page的json文件中声明。但可能我们有一些组件 非常多地方用 vue有Vue.use(组件);然后我们将原本page中json的配置删掉。这样他就成立一个项目全局的公共组件了。重新编译 会发现组件依旧能正常使用。这样 他就成立一个公共组件。

weixin_45966674的博客 686

微信小程序公共组件的引用与控制

思路: 1.在组件wxml文件里实现布局、数据绑定、事件绑定; 2.组件js文件里定义事件,并将文件所有内容作为一个对象export出去; 3.在引用的文件引入组件(方式有两种,一个是用include引入,一个是import引入,详情: https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/import.html 

Dreawer微信小程序联盟 6699

image 微信小程序flex_哔哩哔哩【微信小程序】

一、bilibili项目介绍:原生微信小程序上传到简书:https://www.jianshu.com/p/1341f4f7c7c7代码上传到github :https://github.com/wcvwv/bilibili二、接口地址:路径:https://easy-mock.com/mock/5c1dfd98e8bfa547414a5278/bili首页导航:/navList首页轮播...

weixin_29489791的博客 1122

微信小程序如何在公共组件中改变某一个页面的属性值

首先目前我不了解可以直接在组件中改变页面的值的方法,所以我通过监听的方式在B页面监听app.js的某一属性值的改变从而改变B页面的值,众所周知app.js的某一属性值是很容易就能更改的。组件中只需要在你需要改变页面值的时候改变一下app.js的所被监听的这个属性的值即可。公共组件A改变页面B的属性isShow的值。

qq_49080239的博客 796

微信小程序开发系列(三十四)·自定义组件的创建、注册以及使用(数据和方法事件的使用)

小程序目前已经支持组件化开发,可以将页面中的功能模块抽取成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。开发中常见的组件有两种:① 公共组件:将页面内的功能模块抽取成自定义组件,以便在不同的页面中重复使用② 页面组件:将复杂的页面拆分成多个低耦合的模块,有助于代码维护如果是公共组件,建议放在项目根目录的 components 文件夹中如果是页面组件,建议放在对应页面的目录下建议:一个组件一个文件夹开发中常见的组件主要分为公共组件和。

时光の尘的博客 2126
上一篇: block-配置讲解
下一篇: CentOS7下安装nvm
wolf131721
博客等级 码龄9年 38粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值