小程序

97 阅读3分钟
!--pages/mypage/mypage.wxml-->
<!-- 行内标签 text标签 类似于span -->
<!-- 小程序推荐使用class -->
<view class="main">
    <text>pages/mypage/mypage.wxml</text>
    <text>pages/mypage/mypage.wxml</text>
    <!-- 块级标签 view -->
    <!-- app.wxss的样式是 全局的 所有页面都能用 -->
    <view class="red">我是块级标签view 类似于div</view>
    <view>我是块级标签view 类似于div</view>
    <!-- 不会存在于dom的标签 block 起着包裹者的作用 -->
    <block>
        <!-- 小程序的插值语法 可以获取js里面data的值 -->
        <!-- 使用bindtap实现点击操作 -->
        <view bindtap="handle" data-msg="hi">{{username}}</view>
    </block>
    <!-- bindtap 会出现冒泡
    而catchtap 会阻止冒泡 -->
    <view class="div1" catchtap="fn1">
        <view class="div2" catchtap="fn2">
        
        </view>
    </view>

    <button bindtap="dian">点我</button>
</view>

/* 小程序自带单位rpx 把屏幕的宽度 等比例分成750份 */
    /* 占满宽度直接写750rpx即可 */
    /* rpx总体上的大小 比 px要小 */



Page({

    /**
     * 页面的初始数据
     */
    data: {
        username:"张三"
    },
    fn1:function(){
        console.log('fn1')
    },
    fn2:function(){
        console.log('fn2')
    },

    handle:function(e){
        /* 解构赋值 */
        let {currentTarget:{dataset:{msg}}} = e;
        // console.log(msg)
       
        /* 想要设置值 视图和数据双向绑定显示 要使用this.setDate */
        this.setData({
            username:"李四"
        })
         /* 获取小程序里面的值要使用this.data.的方式 */
         console.log(this.data.username)
    },
    dian:function (){
        /* 使用getApp获取全局数据 */
        const {globalData:{name}} = getApp()
        console.log(name)
    },


生命周期函数


    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        console.log(options)
    },

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

    /**
     * 生命周期函数--监听页面显示
     */
    /* onShow的执行顺序大于onReady */
    onShow: function () {
        console.log('mypage 监听页面显示')
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    /* 切换到聊天主页面 退出小程序的时候执行 */
    onHide: function () {
        console.log('mypage 监听页面隐藏')
    },

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

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    /* 需要在对应的json中加入enablePullDownRefresh:true  */
    onPullDownRefresh: function () {
        console.log('下拉刷新')
    },

    /**
     * 页面上拉触底事件的处理函数
     */
    /* 需要在对应的json中配置onReachBottomDistance:0 
    主页面y轴出现滚动条
    onReachBottomDistance表示滚动条距离底部多少的时候触发*/
    onReachBottom: function () {
        console.log('上拉加载更多')
    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {
        console.log('用户点击右上角分享')
    }
})


<!--pages/fenglei/fenglei.wxml-->
<button bindtap="goBack">返回上一级</button>
<!-- wx:if 和 wx:elif 以及wx:else之间不可以被其他的标签打断 -->
<block>
    <view wx:if="{{msg=='zhangsan'}}" class="t">欢迎回来主人</view>
    <view wx:elif="{{msg=='lisi'}}" class="t">家里水龙头没有坏不要过来</view>
    <view wx:elif="{{msg=='24'}}" class="t">您好欢迎为您服务</view>
    <view wx:else class="t">显示家里没人</view>
</block>




// pages/forpage/forpage.js
const util2 = require('../../utils/util2')
Page({
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        // console.log( util2.pingjie('hello','小瘦子') )
        // let b = util2.isFlag(this.data.list,'styFlag')
        // console.log(b)
        /* Date.now() 产生一个当前的时间戳 */
        let time = util2.isTime( Date.now() )
        console.log(time)
       
    },
    go1:function(){
        /* 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面 */
        wx.navigateTo({
          url: '/pages/logs/logs?name=zhangsan',
        })
    },
    go2:function(){
      /* 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 */
        wx.switchTab({
          url: '/pages/index/index?name=lisi',
        })
    },
    go3:function(){
       /*  关闭所有页面,打开到应用内的某个页面 */
        wx.reLaunch({
          url: '/pages/fenglei/fenglei?name=24',
        })
    },
    go4:function(){
        /* 使用redirectTo是无法使用navigateBack返回的*/
        /* 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。 */
        wx.redirectTo({
            url: '/pages/fenglei/fenglei',
        })
    },

    /**
     * 页面的初始数据
     */
    data: {
        flag:1,
        list:['冰墩墩','雪融融','小泡菜'],
        list:[{
            name:'冰墩墩',
            styFlag:true
        },{
            name:'雪融融',
            styFlag:false
        },{
            name:'小泡菜',
            styFlag:false
        }]
    },
    choose:function(e){
        let { currentTarget:{ dataset:{i} } } = e;
        /* 第一步获取点击的当前的内容的索引 */
        console.log(i)
        /* 排他 把所有的先置空 */
        this.data.list.forEach(r=>{
            r.styFlag = false
        })
        this.data.list[i].styFlag = true;
        /* 数据变了 视图没变 必须要使用setData实现数据和视图的双向数据绑定 */
        this.setData({
            list:this.data.list
        })
    },
    a:function(e){
        console.log(e)
    },
    qie:function(){
        this.setData({
            flag:3
        })
    },

    

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }




})
<!--pages/forpage/forpage.wxml-->
<!-- <view class="t" wx:if="{{flag==1}}">我是可爱的小墩墩</view>
<view class="t" wx:elif="{{flag==2}}">我是冰墩墩</view>
<view class="t" wx:elif="{{flag==3}}">我是雪融融</view>
<view class="t" wx:else>我是可恶的小泡菜</view>
<button bindtap="qie">切换</button> -->
<!-- data-传动态的值 需要加{{}}绑定 -->
<view bindtap="a" data-f="{{flag}}">123</view>
<!-- wx:for="{{数组}}" 循环需要绑定key wx:key="index"-->
<!-- 自带定义 item 表示数组的每一项 index 表示数组的索引 -->
<!-- 使用wx:for-item修改每一项值的key -->
<!-- 使用wx:for-index修改每一项值的index -->
<view wx:for="{{list}}" class="t" wx:key="i" 
    wx:for-item="r" wx:for-index="i"
    style="color:{{r.styFlag?'red':''}};"
    data-i="{{i}}"
    bindtap="choose"
>
    {{r.name}}--{{i}}
</view>
<button bindtap="go1" style="margin: 3px;">张三</button>
<button bindtap="go2" style="margin: 3px;">李四</button>
<button bindtap="go3" style="margin: 3px;">24号</button>
<button bindtap="go4" style="margin: 3px;">不带参数</button>




<!--index.wxml-->
<view class="container">
  <button bindtap="goBack">返回跳转之前的页面</button>
  <view class="userinfo">
    <block wx:if="{{canIUseOpenData}}">
      <view class="userinfo-avatar" bindtap="bindViewTap">
        <open-data type="userAvatarUrl"></open-data>
      </view>
      <open-data type="userNickName"></open-data>
    </block>
    <block wx:elif="{{!hasUserInfo}}">
      <button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button>
      <button wx:elif="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
      <view wx:else> 请使用1.4.4及以上版本基础库 </view>
    </block>
    <block wx:else>
      <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    </block>
  </view>
  <view class="usermotto">
    <text class="user-motto">{{motto}}</text>
  </view>
</view>