微信小程序(二)

news2024/11/24 17:45:09

目录

1、input标签

 一、表单绑定

1、数据绑定

2、输入获取

二、网络请求

1、介绍

2、注意

3、使用

4、基于Promise封装

三、自定义组件

1、创建

2、父向子组件通信

3、子向父组件通信

 4、生命周期

四、vant weapp组件库

1、配置

2、使用


进入本章前的拓展:

1、input标签

小程序的input标签新增了可以改变placeholder样式的属性

<view class="about-page">
  <input type="text" placeholder="请输入账号" placeholder-style="color:red" placeholder-class=""/>
</view>
.about-page{
  padding: 20rpx;
}
input{
  border: 2rpx solid #ccc;
}


 一、表单绑定

1、数据绑定

(1)格式:value="{{变量}}"

(2)区别:小程序与vue的数据绑定

①小程序使用【mustache语法】绑定表单标签的value,数据流向【变量=》标签】

②vue是v-model双向数据绑定方式,数据流向【变量=》标签】及【标签=》变量】

(3)使用:

about.wxml

<view class="about-page">
  <input type="text" placeholder="请输入账号" placeholder-style="color:red" value="{{account}}"/>
</view>

about.js 

data: {
  account:'默认',
},

(4)注意:

小程序value的属性值绑定要加插值符号{{}}


2、输入获取

(1)格式:bindinput="事件"

(2)使用:

about.wxml

<view class="about-page">
  <input type="text" placeholder="请输入账号" placeholder-style="color:red" value="{{account}}" bindinput="onValue"/>
</view>

about.js

data: {
  account:'默认',
},
onValue(e){
  console.log(e.detail.value);
},

(3)注意:

①直接赋值,虽然可以在终端实时输出改变数据,但是无法将实时数据显示到页面上

about.wxml

<view class="about-page">
  <input type="text" placeholder="请输入账号" placeholder-style="color:red" value="{{account}}" bindinput="onValue"/>
  输入框当前值:{{account}}
</view>

about.js

data: {
  account:'默认',
},
onValue(e){
  console.log(e.detail.value);
  this.data.account = e.detail.value
  console.log(this.data.account);
},

②小程序正确修改数据要放在this.setData({})中

onValue(e){
  console.log(e.detail.value);
  this.setData({
    account:e.detail.value
  })
  console.log(this.data.account);
},

(4)数据在对象内时

<view class="about-page">
  <input type="text" placeholder="请输入账号" placeholder-style="color:red" value="{{userInfo.username}}" bindinput="onValue"/>
  输入框当前值:{{userInfo.username}}
</view>
data: {
  userInfo:{
    username:'',
    password:''
  }
},
onValue(e){
  this.setData({
    ['userInfo.username']:e.detail.value
  })
},

(5)通用绑定封装

about.wxml

<view class="about-page">
  <input type="text" placeholder="请输入账号" placeholder-style="color:red" value="{{userInfo.username}}" bindinput="getValueInput" data-target="userInfo" data-key="username"/>
  当前账号:{{userInfo.username}}
  <input type="text" placeholder="请输入密码" placeholder-style="color:red" value="{{userInfo.password}}" bindinput="getValueInput" data-target="userInfo" data-key="password"/>
  当前密码:{{userInfo.password}}
</view>

about.js

data: {
  account:'默认',
  userInfo:{
    username:'',
    password:''
  }
},
getValueInput(e){
  console.log(e);
  // 解构赋值
  const {target,key} = e.currentTarget.dataset
  this.setData({
    [`${target}.${key}`]:e.detail.value
  })
},

二、网络请求

1、介绍

小程序通过 wx.request 函数发送请求

2、注意

若在开发过程中,请求域名非https协议,请在 右上角=>详情=>本地设置=>勾选【不校验合法域名】,否则将无法发送请求

3、使用

小编使用天行数据API为例子

天行数据TianAPI - 开发者API数据平台天行数据TianAPI开发者API数据平台天聚数行,在这里您可以免费且轻松的调用各种API数据接口用于系统软件、应用App、网站、小程序开发等。https://www.tianapi.com/(1)默认GET获取方式

①about.wxml

<view class="about-page">
  <button bindtap="getRequestApi">获取数据api</button>
</view>

②about.js 

getRequestApi(){
  wx.request({
    url: 'https://apis.tianapi.com/tiangou/index',
    method:'GET',
    data: { key:"a3828b7efb833ce8c26d05f10ed40e04" },
    // header: { /* 请求头 */ },
    success: res=>{
        /* 响应的回调 */
        console.log(res.data);
    },
    fail: err=>{
        /* 失败的回调 */
    }
})
},

(2)默认POST获取方式

about.js

getRequestApi(){
  wx.request({
    url: 'https://apis.tianapi.com/tiangou/index',
    method:'POST',
    data: { key:"a3828b7efb833ce8c26d05f10ed40e04" },
    header: { 'content-type':'application/x-www-form-urlencoded' },
    success: res=>{
        /* 响应的回调 */
        console.log(res.data);
    },
    fail: err=>{
        /* 失败的回调 */
    }
})
},

4、基于Promise封装

(1)在utils文件夹下新建request.js文件

// 导出一个方法
export default function (option) {
  // 设置、获取配置项
  const BASE_URL = ""
  // 解构赋值
  let { url = "", method = "GET", data = {}, header = {}, isToken = true/*默认为需要*/ } = option

  /* 请求拦截区域 */
  if (isToken) {
      // 根据接口token需求,对header添加Authorization属性
      header = {
          ...header, // 扩展运算,保留原header信息
          Authorization: wx.getStorageSync('token') // 加入token
      }
  }

  return new Promise((resolve, reject) => {
      wx.request({
          url: BASE_URL + url,
          method,
          data,
          header,
          success(res) {
              /* 响应拦截 */
              resolve(res.data) // 拆包,返回后端数据
          },
          fail(err) {
              reject(err)
          }
      })
  })
}

(2)创建api文件夹=》创建aboutApi.js=》

import instance from '../utils/request'

export function getMsg(data){
  return new instance({
    url:'/tiangou/index',
    method:"GET",
    data
  })
}

export function postMsg(data){
  return new instance({
    url:'/tiangou/index',
    method:"POSt",
    data,
    header:{
      'content-type':'application/x-www-form-urlencoded'
    }
  })
}

(3)回到about.js文件

//引入api文件
import {getMsg,postMsg} from "../../api/aboutApi.js"
getRequestApi(){
  // getMsg({key:'a3828b7efb833ce8c26d05f10ed40e04'}).then(res=>{
  //   console.log(res);
  // })
  postMsg({key:'a3828b7efb833ce8c26d05f10ed40e04'}).then(res=>{
    console.log(res);
  })
},

三、自定义组件

1、创建

(1)创建component文件夹=》创建dialog文件夹=》创建Component组件index文件

2、父向子组件通信

(1)子级index.js文件设置properties,类似vue2中的父子组件传参使用方法props

properties: {
    title:{
      type:String,
      value:'默认',
    }
  },

(2)父级about.json文件注册组件"dialog-tag":"/component/dialog/index"

{
  "component": true,
  "usingComponents": {
    "dialog-tag":"/component/dialog/index"
  }
}

(3)使用组件,在父级about.wxml文件编写,使其显示到页面上

<dialog-tag title='123'></dialog-tag>

3、子向父组件通信

(1)子级index.wxml文件设置点击事件的按钮

<view class="about-page">
  <dialog-tag title='123'></dialog-tag>
  <button bindtap="onclick">点击</button>
</view>

(2)子级index.js设置要传递的参数及点击事件

data: {
    msg:'给父级的变量',
  },
 methods: {
    onclick(){
      this.triggerEvent("myevent",this.data.msg)
    }
  }

(3)父级about.wxml添加连接事件

<view class="about-page">
  <dialog-tag title='' bindmyevent="sonClick"></dialog-tag>
</view>

(4)父级about.js点击事件获取子级内容

sonClick(e){
  console.log(e);
},

 4、生命周期

(1)基本生命周期输出顺序

/**
   * 生命周期函数--监听页面加载
   * 页面第一次加载
   */
  onLoad(options) {
    console.log(1);
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    console.log(2);
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    console.log(3);
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    console.log(4);
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    console.log(5);
  },

(2)更多详细生命周期看文档

组件生命周期 | 微信开放文档


四、vant weapp组件库

1、配置

(1)新建终端=》npm init=》一直回车即可

(2)下载

npm install --production

(3)下载vant

①文档:Vant Weapp - 轻量、可靠的小程序 UI 组件库

②输入下载语句

npm i @vant/weapp -S --production

(4)去除默认样式,修改默认值配置项

①将 app.json 中的 "style": "v2" 去除

②修改project.config.json,查询packNpmManually属性后修改为true

③修改project.config.json,查询packNpmRelationList添加

{
    "packageJsonPath": "./package.json",
    "miniprogramNpmDistDir": "./miniprogram/"
}

(5)构建npm

①点击工具=》构建npm=》出现如下图,即构建成功

②如果构建失败可以看这个文章的解决办法

小程序npm构建时发生错误Error: C:\Users\13914\WeChatProjects\miniprogram-2\miniprogram\ 未找到_沈思齐的博客-CSDN博客


2、使用

(1)全局app.json中导入以下代码

"usingComponents": {
  "van-button": "@vant/weapp/button/index"
},

(2)当每个页面需要使用弹出层时,就在对应页面的json文件中引入对应内容

"usingComponents": {
  "van-popup": "@vant/weapp/popup/index"
}
<van-cell title="展示弹出层" is-link bind:click="showPopup" />123s
<van-popup
  show="{{ show }}"
  position="top"
  custom-style="height: 20%;"
  bind:close="onClose"
/>
data: {
  show: true,
},
showPopup() {
  this.setData({ show: true });
},
onClose() {
  this.setData({ show: false });
},

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宇宙的尽头是银行?聊聊在银行做软件测试的那些事

从一家工作了5年的软件公司的测试管理者跳槽到**银行做软件测试&#xff0c;短短2个月&#xff0c;对银行测试有了初步认识&#xff0c;总结和记录下来&#xff0c;加深个人的理解&#xff0c;同时也共享给各位。 银行作为大家的理财顾问&#xff0c;对金钱非常敏感&#xff0…

118、仿真-基于51单片机的直流电压电流控制系统设计(Proteus仿真+程序等)

方案选择 单片机的选择 方案一&#xff1a;AT89C52是美国ATMEL公司生产的低电压&#xff0c;高性能CMOS型8位单片机&#xff0c;器件采用ATMEL公司的高密度、非易失性存储技术生产&#xff0c;兼容标准MCS-51指令系统&#xff0c;片内置通用8位中央处理器(CPU)和Flash存储单元…

想冲嵌入式,学这套教程

今天&#xff0c;给大家带来一套非常前沿的视频教程&#xff01;有多前沿&#xff1f;诸君&#xff0c;请听我一一道来&#xff1a; 众所周知&#xff0c;现在嵌入式空前火热&#xff0c;随着AI驾驶、智能机器人、智能制造、智慧家居等智能软硬件的飞速发展&#xff0c;嵌入式已…

PLC工作者的工作待遇现状如何?

PLC工作者的工作待遇通常会受到多个因素的影响&#xff0c;包括地理位置、经验水平、行业需求以及个人技能等。 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6 在一般情况下&#xff0c;PLC工作者通常拥有较高的技术水平和专业知识&#xff0c;因此他们…

关于自学\跳槽\转行做网络安全行业的一些建议

很好&#xff0c;如果你是被题目吸引过来的&#xff0c;那请看完再走&#xff0c;还是有的~ 为什么写这篇文章 如何自学入行&#xff1f;如何小白跳槽&#xff0c;年纪大了如何转行等类似问题 &#xff0c;发现很多人都有这样的困惑。下面的文字其实是我以前的一个回答&#…

pnpm改造替换npm

Q: 为什么要迁移pnpm&#xff1f; 相比于npm&#xff0c;pnpm有一些优势&#xff1a; 更快的安装速度: 在安装包时&#xff0c;pnpm使用了硬链接的方式&#xff0c;将已安装的包链接到新的目录下&#xff0c;而不是复制或下载包。这样&#xff0c;当你安装一个包的不同版本或者…

LLM - DataCollatorForLanguageModeling 样本生成 by transformers

目录 一.引言 二.生成样本 By API 1.样本处理样式 2.DataCollatorForLanguageModeling 2.1 样本准备 2.2 API 生成 三.生成样本 By DIY 1.样本准备 2.data_colloator 实现 3.使用自定义 data_colloator 四.总结 一.引言 前面我们讲了 Baichuan7B 的 lora 微调步骤&a…

2023年7月广州/惠州/深圳软考信息系统项目管理师报名

信息系统项目管理师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资…

矩阵的范数和特征值之间的关系

参考&#xff1a; linear algebra - Why is the norm of a matrix larger than its eigenvalue? - Mathematics Stack Exchange

SpringBoot 对象存储 MinIO

SpringBoot 对象存储 MinIO 1.MinIO简介 MinIO 是一个基于 Go 实现的高性能、兼容 S3 协议的对象存储。它采用 GNU AGPL v3 开源协议&#xff0c;项目地址是 https://github.com/minio/minio&#xff0c;官网是 https://min.io。 它适合存储海量的非结构化的数据&#xff0c…

园区能源控制管理系统

园区能源控制管理系统是一种能够实现对园区内能源消耗、供应和分配进行实时监控、管理和控制的系统。该系统通过对园区内各种能源设备的数据采集、处理和分析&#xff0c;为管理者提供实时的能源使用情况和数据分析&#xff0c;从而帮助管理者制定科学的能源管理策略和节能措施…

《向量数据库指南》——传统数据库上的向量搜索插件

传统数据库上的向量搜索插件 很好,现在我们已经知道了向量搜索库和向量数据库之间的区别,下面让我们来看看向量数据库与向量搜索插件有何不同。 很多传统关系型数据库和搜索系统,如 ClickHouse 和 Elasticsearch,都包含内置的向量搜索插件。例如,Elasticsearch 8.0 包…

疫情数据微处理——Numpy实战

注&#xff1a;文章内容参考了莫烦python 一、数据来源 数据来自于Kaggle公开免费数据集&#xff0c;需要的伙伴可以自行到这里下载。 二、展示数据 我们用一个字典存储csv数据的第一行、每一行开头的日期以及除了这两者外的数据。 import csv import numpy as npwith ope…

2023年7月13日,Stream流,Stream流的获取,Stream流中间聚合操作,Stream流终结操作,Calendar时间日期类,包装类

Stream流 1. 单列集合的Stream流获取 Java中的Stream流操作可以分为中间操作和终止操作两种。 中间操作包括&#xff1a; filter&#xff1a;对流中的元素进行筛选。map&#xff1a;对流中的元素进行转换。flatMap&#xff1a;对流中的元素进行扁平化映射。distinct&#x…

重启Oracle数据库

root 用户登录服务器。 1、 以oracle身份登录数据库&#xff0c;命令&#xff1a;su - oracle 2、 进入Sqlplus控制台&#xff0c;命令&#xff1a;sqlplus /nolog 3、 以系统管理员登录&#xff0c;命令&#xff1a;connect / as sysdba可以合并为&#xff1a;sqlplus sys/密码…

Acwing:第 111 场周赛(2023.7.12 C++)

目录 5047. 1序列 题目描述&#xff1a; 实现代码&#xff1a; 5048. 无线网络 题目描述&#xff1a; 实现代码&#xff1a; 二分 贪心 5049. 选人 题目描述&#xff1a; 实现代码&#xff1a; 数学 5047. 1序列 题目描述&#xff1a; 实现代码&#xff1a; #incl…

如何实现浏览器内多个标签页之间的通信?

1、使用 LocalStorage 特点&#xff1a;同域共享存储空间&#xff1b;持久化将数据存储在浏览器&#xff1b;提供事件监听storage变化 实现逻辑&#xff1a; A页面将数据存储在本地。B页面监听storage的变化&#xff0c;同步storage的最新数据&#xff1b; 好处&#xff1a;操…

绘制数据图

读取文件&#xff1a; ( 1960 : 30 64 6 ) (1970 : 24 69 7 ) (1980 : 23 68 9 ) (1990 : 18 70 12) (2000 : 15 68 17 ) (2010 : 13 64 23 ) (2020 : 12 60 28) ( 2030 : 11 59 30 ) ( 2040 : 11 56 33 ) 运行代码&#xff1a; //绘制数据图 #include"std_lib_facil…

2.字体图标

2.1字体图标的产生 字体图标使用场景:主要用于显示网页中通用、常用的一些小图标。 精灵图是有诸多优点的&#xff0c;但是缺点很明显&#xff1a; 1.图片文件比较大 2.图片本身放大和缩小会失真 3.一旦图片制作完毕想要更换非常复杂 字体图标iconfont可以很好的解决以上问题…

Redis特性初识及其安装与配置

目录 1.认识Redis Redis主要特点 主要应用场景 2.MySQL VS NoSQL 3.Redis的安装与配置 redis5的安装 修改配置文件 启动redis 4.Redis客户端 命令行客户端 图形化界面客户端 基于redis的API自行开发客户端 1.认识Redis Redis&#xff08;Remote Dictionary Serve…