微信小程序(二)

小程序相关

基本标签

view (快标签)
<view></view>
image(图片标签)

!!!注:图片要给相对路径

<image class="tp" src="1.png"></image>
text(文本标签)
<text>hello world</text>

模板语法

使用 {{}} 来输出(可以做运算)
<text>{{name}}</text>
Page({
    data:{
        name:'张三'
    }
})
运算
<!-- 普通运算 -->
<text>{{1+1}}</text>
<!-- 字符串运算 -->
<text>{{'1'+'1'}}</text>
<!-- 三目运算 -->
<text>{{3>4?"大":"小"}}</text>
。。。

数据绑定

1. 小程序
  1. data中初始化数据

  2. 修改数据使用 this.setData()

Page({
    data:{
        name:'张三'
    },

    //	生命周期函数--监听页面加载
    onLoad: function (options) {
        // 修改 name 状态数据
        // this 代表当前页面的实例对象
        // 在回调函数中是同步修改
        this.setData({
            name:'李四'
        })
        console.log(this.data.msg)	//	李四
    }, 
})


  1. 数据流:

    1. 单项: Model —> View
2. Vue
  1. data中初始化数据

  2. 修改数据: this.key = value

  3. 数据流:

    1. Vue是单项数据流: Model —> View
    2. Vue中实现了双向数据绑定: v-model
  4. Vue劫持代理 底层原理

    // Vue数据劫持代理
    
    // 模拟Vue中data选项
    
    let data = {
      username: 'curry',
      age: 33
    }
    
    // 模拟组件的实例
    let _this = {
    
    }
    
    // 利用Object.defineProperty()
    for(let item in data){
      // console.log(item, data[item]);
      Object.defineProperty(_this, item, {
        // get:用来获取扩展属性值的, 当获取该属性值的时候调用get方法
        get(){
          console.log('get()');
          return data[item]
        },
        // set: 监视扩展属性的, 只要已修改就调用
        set(newValue){
          console.log('set()', newValue);
          // _this.username = newValue; 千万不要在set方中修改修改当前扩展属性的值,会出现死循环
          data[item] = newValue;
        }
      })
    }
    
    console.log(_this);
    // 通过Object.defineProperty的get方法添加的扩展属性不能直接对象.属性修改
    _this.username = 'wade';
    console.log(_this.username);
    
    

事件绑定

bind 绑定:事件绑定不会阻止冒泡事件向上冒泡(会冒泡)
<view class="wb" bindtap="han">
    <text bindtap="haa">hello world</text>
</view>
catch 绑定: 事件绑定可以阻止冒泡事件向上冒泡(不会冒泡)
<view class="wb" catchtap="han">
    <text catchtap="haa">hello world</text>
</view>
WXML的冒泡事件列表:
类型触发条件最低版本
touchstart手指触摸动作开始
touchmove手指触摸后移动
touchcancel手指触摸动作被打断,如来电提醒,弹窗
touchend手指触摸动作结束
tap手指触摸后马上离开
longpress手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发1.5.0
longtap手指触摸后,超过350ms再离开(推荐使用longpress事件代替)
transitionend会在 WXSS transition 或 wx.createAnimation 动画结束后触发
animationstart会在一个 WXSS animation 动画开始时触发
animationiteration会在一个 WXSS animation 一次迭代结束时触发
animationend会在一个 WXSS animation 动画完成时触发
touchforcechange在支持 3D Touch 的 iPhone 设备,重按时会触发1.9.90

路由跳转(API)

wx.navigateTo(Object object)

保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。

参数
Object object
属性类型默认值必填说明
urlstring需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 ‘path?key=value&key2=value2’
eventsObject页面间通信接口,用于监听被打开页面发送到当前页面的数据。基础库 2.7.3 开始支持。
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)
示例代码
wx.navigateTo({
    url: '/pages/logs/logs'
})
//test.js
Page({
    onLoad: function(option){
        console.log(option.query)
        const eventChannel = this.getOpenerEventChannel()
        eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
        eventChannel.emit('someEvent', {data: 'test'});
        // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
        eventChannel.on('acceptDataFromOpenerPage', function(data) {
            console.log(data)
        })
    }
})
wx.redirectTo(Object object)

关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。

参数

Object object

属性类型默认值必填说明
urlstring需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 ‘path?key=value&key2=value2’
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)
示例代码
wx.redirectTo({
    url: '/pages/logs/logs'
})
wx.reLaunch(Object object)

关闭所有页面,打开到应用内的某个页面

参数
Object object
属性类型默认值必填说明
urlstring需要跳转的应用内页面路径 (代码包路径),路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)
示例代码
wx.reLaunch({
    url: '/pages/logs/logs'
})

声名周期

img

onLoad() (生命周期函数–监听页面加载)

onLoad: function (options) {
    console.log('onLoad  页面加载')
}

onReady() (生命周期函数–监听页面初次渲染完成)

onReady: function () {
    console.log('onReady  页面初次渲染完成')
}

onShow() (生命周期函数–监听页面显示)

onShow: function () {
    console.log('onShow  页面显示')
}

onHide() (生命周期函数–监听页面隐藏)

onHide: function () {
    console.log('onHide  页面隐藏')
},

onUnload() (生命周期函数–监听页面卸载)

onUnload: function () {
    console.log('onUnload  页面卸载')
},

用户授权

使用按钮自带属性 open-type=“getUserInfo” 可以获取用户信息

open-type 的合法值

说明最低版本
getUserInfo获取用户信息,可以从bindgetuserinfo回调中获取到用户信息 (小程序插件中不能使用1.3.0
<button open-type="getUserInfo">获取用户信息</button>

获取信息的回调

属性类型默认值必填说明最低版本
bindgetuserinfoeventhandle用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与wx.getUserInfo返回的一致,open-type="getUserInfo"时有效1.3.0
<button bindgetuserinfo="handleGetuse" open-type="getUserInfo">获取用户信息</button>
Page({
    handleGetuse(res){
        console.log(res)
    }
})

获取用户信息(API)

wx.getUserInfo(Object object)

!!!注:需要在用户信息功能页中获得用户授权之后调用。否则将返回 fail。

参数
Object object
属性类型默认值必填说明
withCredentialsboolean是否带上登录态信息。当 withCredentials 为 true 时,要求此前有调用过 wx.login 且登录态尚未过期,此时返回的数据会包含 encryptedData, iv 等敏感信息;当 withCredentials 为 false 时,不要求有登录态,返回的数据不包含 encryptedData, iv 等敏感信息。
langstringen显示用户信息的语言
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)
object.success 回调函数
Object res
属性类型说明最低版本
userInfoUserInfo用户信息对象,不包含 openid 等敏感信息
rawDatastring不包括敏感信息的原始数据字符串,用于计算签名
signaturestring使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 用户数据的签名验证和加解密
encryptedDatastring包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密
ivstring加密算法的初始向量,详见 用户数据的签名验证和加解密
cloudIDstring敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见云调用直接获取开放数据

案例

onLoad: function (options) {
    wx.getUserInfo({
        success: (res) => {
            console.log(res)
            this.setData({
                userInfo:res.userInfo
            })
        },
        fail: (err) => {
            console.log(err)
        }
    })
}


条件渲染

  1. wx:if=‘条件’

    相当于原来的 if 判断

  <view wx:if='1<2'>123</view>
  1. wx:elif=‘条件’

    相当于原来的 else if 判断

   <view wx:if='1>2'>123</view>
   <view wx:elif='3>2'>456</view>
  1. wx:else

    相当于原来的 else

   <view wx:if='1>2'>123</view>
   <view wx:elif='3>2'>456</view>
   <view wx:else>789</view>

总结

本篇文章主要讲述了一些基础标签的用法、生命周期、常用 API 和条件渲染

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星梦之羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值