微信小程序基础(二)

1.数据绑定

页面数据定义在当前页面的js文件中,通过配置data属性为当前页面添加数据,使用{{}}语法将变量绑定到标签中。

页面数据定义 home.js

Page({
  data:{
    msg:"页面数据"
  }
})

将数据与标签进行绑定 home.wxml

<text class="title">微信小程序 demo</text>
<view>这里显示当前页面绑定的数据 - {{msg}}</view>

渲染结果:

微信小程序基础(二)

2.全局数据

数据绑定只对当前页面有效,如果某些数据要在多个页面共享,就需要写到全局配置对象里面。

全局数据定义在app.js中,通过配置globalData属性添加全局数据,这里定义的数据所有的页面都能访问。

访问方式:获取当前app实例,通过访问实例的globalData属性就能访问全局变量。

注意:如果想将全局数据绑定到页面标签中,则先要将全局数据在页面的data中进行声明,才能使用

全局数据定义

//app.js
App({
  globalData:{
    globalTitle:"我是全局标题"
  }
})

页面使用全局数据时先在data中声明

//home.js

//获取当前实例
const app = getApp()

Page({
  data:{
    msg:"页面数据",
    globalTitle:app.globalData.globalTitle
  }
})

home.wxml

<text class="title">微信小程序 demo</text>
<view>这里显示当前页面绑定的数据 - {{msg}}</view>
<view>{{globalTitle}}</view>

渲染结果:

微信小程序基础(二)

3.事件

(1)小程序的常见事件:

tap:触摸后马上离开。
longpress:触摸后,超过 350ms 再离开。如果指定了该事件的回调函数并触发了该事件,tap事件将不被触发。
touchstart:触摸开始。
touchmove:触摸后移动。
touchcancel:触摸动作被打断,如来电提醒,弹窗等。
touchend:触摸结束。

(2)事件绑定
bind:冒泡阶段触发。
catch:冒泡阶段触发,并取消事件进一步向上冒泡。
capture-bind:捕获阶段触发。
capture-catch:捕获阶段触发,并中断事件,不再向下传播,即中断捕获阶段,并取消随后的冒泡阶段。

(3)事件函数注册
事件触发时的回调函数直接在Pages()的配置项中进行声明,回调函数的参数就是事件对象

//获取当前实例
const app = getApp()

Page({
  data:{
    msg:"页面数据",
    globalTitle:app.globalData.globalTitle
  },
  test(event){
    console.log(‘点击了‘)
  }
})

(4)简单的实例:

<button bind:tap="test">点我</button>
<button bindtap="test">简写成bindtap</button>

点击任何一个按钮,控制台都会打印 ‘点击了‘

(5)事件对象
currentTarget:事件绑定的当前组件。同H5的自定义属性一样,可以通过dataset访问该标签的自定义属性
target:触发事件的源组件,同H5的自定义属性一样,可以通过dataset访问标签的自定义属性
type:事件类型
touches/changedTouches:触点信息,包含坐标等信息
detail:自定义事件所携带的数据,如表单组件的提交事件会携带用户的输入,媒体的错误事件会携带错误信息,详见组件定义中各个事件的定义。点击事件的detail 带有的 x, y 同 pageX, pageY 代表距离文档左上角的距离。

4.数据更新

要修改页面数据的值,使用this.setData()方法。第一个参数为对象,表示要修改的键值对,第二个数据是成功的回调(这个回调是异步的)
修改全局数据的值,直接赋值即可。但是绑定了全局数据的页面,相关数据要重新取值,不然新的值不会同步过去

  test(event){
    //修改当前页面的数据
    this.setData({
      msg:"已被修改"
    },function(){
      console.log(‘msg修改成功‘)
    })
    //修改全局数据
    app.globalData.globalTitle = "全局数据已被修改"
    console.log(app.globalData.globalTitle)
  }

执行结果:

微信小程序基础(二)

上面的例子全局数据更新没有同步至页面中,需要手动更新,代码如下:

test(event){
    //修改全局数据
    app.globalData.globalTitle = "全局数据已被修改"
    console.log(app.globalData.globalTitle)
    //修改当前页面的数据,并重新获取全局数据
    this.setData({
      msg:"已被修改",
      globalTitle:app.globalData.globalTitle
    },function(){
      console.log(‘msg修改成功‘)
    })
  }

微信小程序基础(二)

微信小程序基础(二)

上一篇:C语言const


下一篇:Python+PyQt5设计B站视频数据爬虫小程序