微信小程序学习笔记(3)

摘要:本篇主要讲WXML模板语法渲染页面结构

一、数据绑定的基本原则

①在data中定义数据

②在WXML使用数据

二、在data中定义页面的数据

在页面对应的.js文件中,把数据定义到data对象中

Page({
  data:{
    //字符串类型的数据
    info:'init data',
    //数组类型的数据
    msgList:[{msg:'hello'},{msg:'world'}]
  }
})

三、Mustache语法

1、绑定内容

把data中的数据绑定到页面中渲染,使用Mustache语法(双大括号)将变量包起来

<view>{{要绑定的数据名称}}</view>

2、绑定属性

Page({
data:{
imgSrc:"/images/1.png"}
})
<image src="{{imgSrc}}"></image>

3、运算

三元运算、算术运算等

randomNum:Math.random()*10
<view>{{randomNumber>=5?'随机数字大于或等于5':'随机数字小于5'}}</view>

randomNum:Math.random().toFixed(2)//生成一个带两位小数的随机数
<view>生成100以内的随机数:{{randomNum*100}}</view>

四、事件渲染

小程序框架 / 视图层 / 事件系统 / 介绍 (qq.com)

事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。

渲染层(Webview)—①描述交互事件②用户交互触发事件—>微信客户端(Native)—③逻辑层收到回调—>逻辑层(JsCore)

类型绑定方式事件描述
tapbindtap或bind:tap手指触摸后马上离开,类似于HTML中的click事件
inputbindinput或bind:input文本框的输入事件
changebindchange或bind:change状态改变时触发

1、事件对象的属性列表

当事件回调触发的时候,会收到一个事件对象event,它的详细属性如下表所示:

属性类型说明
typeString事件类型
timeStampInteger页面打开到触发事件所经过的毫秒数
targetObject触发事件的组件的一些属性值集合
currentTargetObject当前组件的一些属性值集合
detailObject额外的信息
touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouchesArray触摸事件,当前变化的触摸点信息的数组

2、target和currentTarget的区别

<view class=“outer-view”bindtap=“outerHandler”>
<button type="primary">按钮</button>
</view>

点击内部按钮时,点击事件以冒泡的方式向外扩散,也会触发外层view的tap事件处理函数

此时,对外层view来说,e.target指向触发事件的源头组件,因此,e.target是内部的按钮组件

e.currentTarget指向当前正在触发事件的那个组件,e.currentTarget是当前的view组件

3、bindtap的语法格式

在小程序中,不存在HTML中的onclick鼠标点击事件,而是通过tap事件来响应用户的触摸行为。

①通过bindtap,可以为组件绑定tap触摸事件

<button type="primary"bindtap="btnTapHandler">按钮</button>

②js.中定义对应的事件处理函数,事件参数通过形参event(一般写成e)来接收:

Page({
  btnTapHandler(e){//按钮tap事件处理函数
    console.log(e)//事件参数对象e
  }
})

4、在事件处理函数中为data中的数据赋值

通过调用this.setData(dataObject)方法,可以给页面data中的数据重新赋值

<button type="primary"bindtap="CountChange">+1</button>
Page({
  data:{count:0},
  vtnTapHandler(e){//按钮tap事件处理函数
    console.log(e)//事件参数对象e
  },
  CountChange(){
    this.setData({
      count:this.data.count+1
    })
  }
})

5、事件传参

小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数。

在事件处理函数中,通过event.target.dataset.参数名即可获得具体参数的值

btnHandler(event){
    //dataset是一个对象,包括了所有通过data-*传递过来的参数项
    console.log(event.target.dataset)
    //通过dataser可以访问到具体参数的值
    console.log(event.target.dataser.info)
<button type="primary"bindtap="btnTap2"data-info="{{2}}">+2</button>
btnTap2(e){//按钮tap事件处理函数
    console.log(e)//事件参数对象e
  },

btnTap2(e){//按钮tap事件处理函数
    this.setData({count:this.data.count+e.target.dataset.info})
  },

6、bindinput的语法格式

通过input事件来响应文本框的输入事件

①通过bindinput可以为文本框绑定输入事件

<input bindinput="inputHandler"></input>

②在页面.js文件中定义事件处理函数

inputHandler(e){
    //e.detail.value是变化过后,文本库最新的值
    console.log(e.detail.value)
  }

7、实现文本框和data之间的数据同步

①定义数据

②渲染结构

<input value="{{msg}}"bindinput="iptHandler"></input>

③美化样式

input{
  border:1px solid #eee;
  padding:5px;
  margin:5px;
  border-radius:3px;
}

④绑定input事件处理函数

data:{msg:'你好,'},
  //文本框内容改变事件
  iptHandler(e){
    this.setData({
      //通过e.detail.value获取到文本框最新的值
      msg:e.detail.value
    })
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值