美文网首页前端交流uniapp学习交流
uniapp 学习笔记(持续更新中~)

uniapp 学习笔记(持续更新中~)

作者: 羽翼的翼 | 来源:发表于2019-08-05 10:25 被阅读0次

    1. 页面传值

    1.1 传值给下一个页面

    页面跳转的时候在url后边进行拼接参数 如下例子:

    detail(img, name, payment, freight) {
      uni.navigateTo({
        url: './detail?img='+ img + '&name='+ name + '&payment=' + payment + '&freight='+ freight
      });
    }
    

    1.2接收上个页面传递的值

    onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数
      console.log(option); //打印出上个页面传递的参数。
      // console.log(option.name); //打印出上个页面传递的参数。
      this.image.push(option.img),
      this.name = option.name,
      this.payment = option.payment
    }
    

    1.3 更多参考

    https://ask.dcloud.net.cn/article/35970

    2. 去掉页面顶部状态(pages.json中配置)

    // "app-plus": {
       //  "titleNView": false
     // }
    {
                "path": "pages/index/index",
                "style": {
                    "navigationBarTitleText": "首页",
                    "navigationStyle": "custom",
                    "navigationBarTextStyle": "white"
                }
            }
    
    1567667645(1).jpg

    3 动态设置导航栏样式

    uni.setNavigationBarTitle(OBJECT)
    

    OBJECT参数说明:

    image.png
    例子:
    uni.setNavigationBarTitle({
        title: '新的标题'
    });
    

    4. 发送socket

    App(低版本)目前不支持 ArrayBuffer 类型的数据收发。可以使用 plus-websocket 插件替代。

    plus-websocket 插件使用

    ### NPM
    npm i plus-websocket --save
    import socket from 'plus-websocket'
    ### 直接下载
    
    // 以下路径需根据项目实际情况填写
    import socket from '../../js/plus-websocket/index.js'
    
    ### 页面使用
    可以参考uni.app文档
    我用的时候是把前边的uni替换为了socket
    示例:uni.connectSocket  替换为 socket.connectSocket
    
    
    // socket连接
                var socketLoad = {
                    cmdCode: '0201',
                    identity: thas.$store.state.userInfo.LogNo,
                    timeToken: new Date().getTime()
                }
                var socketLoadStr = JSON.stringify(socketLoad)
                console.log(socketLoadStr)
                // 将字符串转换为ArrayBuffer类型 否则上位机不识别--start
                var arrayBuffer = new ArrayBuffer(socketLoadStr.length + 4)
                console.log(arrayBuffer, 'arrayBuffer')
                var dataView = new DataView(arrayBuffer)
                console.log(dataView, 'dataView')
                dataView.setInt32(0, socketLoadStr.length, true)
                for (var i = 0; i < socketLoadStr.length; i++) {
                    dataView.setUint8(i + 4, socketLoadStr.charCodeAt(i))
                }
                console.log(dataView.buffer, 'buffer')
                // 将字符串转换为ArrayBuffer类型 否则上位机不识别--end
                // 建立socket连接
                socket.connectSocket({
                  url: 'ws://59.120.13.79:8080' // 模拟的地址
                });
                // 监听WebSocket连接打开事件。
                socket.onSocketOpen(function (res) {
                    sendSocketMessage();
                });
                
                function sendSocketMessage() {
                // 发送消息给socket 必须再socket打开之后才可以调用
                  socket.sendSocketMessage({
                    data: dataView.buffer,
                    success: (res)=> {
                        console.log(res)
                        console.log('登录发送成功')
                        console.log(dataView.buffer)
                    },
                    fail: (err) => {
                        console.log(err)
                    }
                  });
                  // 服务器回复的内容
                    socket.onSocketMessage(function(res){
                        console.log('收到服务器内容:', res.data);
                        var data = res.data
                         
                     // 转换为数组
                        var array = Array.prototype.slice.call(new Uint8Array(data))
    
                        // 定义一个字符串 循环数组 将Unicode 编码转为一个字符:
                        var str = ''
                        array.forEach(item => {
                            var res = String.fromCharCode(item)
                            str += res
                        })
                        // console.log(str, 61)
                        var obj = JSON.parse(str)
                        console.log(obj, 62)
                    })
                }
    

    5. 修改左上角的返回图标

    6. 设置/删除tabbar右上角角标

    // 设置
    uni.setTabBarBadge({
      index:0, // tabbar位置,索引从0开始
      text: '1' // tabbar角标显示的数字 字符串
    })
    
    // 删除
    uni.hideTabBarRedDot({
      index: 0 // tabbar位置,索引从0开始
    })
    

    学习更多

    https://uniapp.dcloud.io/README

    相关文章

      网友评论

        本文标题:uniapp 学习笔记(持续更新中~)

        本文链接:https://www.haomeiwen.com/subject/vvspdctx.html