微信小程序(2)

前提:最近因为被派去别的组,开发微信小程序,遇到了很多坑,记录一下

一、框架

    1. mpvue  2. vant-ui

二、踩过的坑

1.  分包

    因为有一次提交的时候,提示主包文件过大,不能超过2M,所以就需要将代码分包

    需要注意的是:tabBar标签所需要的路由链接,都必须写在主包里面,packageA和packageB必须在pages文件下

    app.json

  "pages": [
    "pages/login/main",
    "pages/index/main",
    "pages/my/main",
    "pages/exam/main",
    "pages/cultivate/main"
  ],
  "subPackages": [
    {
      "root": "pages/packageA",
      "pages": ["register/main", "registerAnswer/main", "registerFinish/main"]
    },
    {
      "root": "pages/packageB",
      "pages": [
        "cultivateInfo/main",
        "material/main",
        "beforeExam/main",
        "examInfo/main",
        "password/main",
        "mockExam/main",
        "addMockExam/main",
        "startMockExam/main",
        "mockExamTitle/main",
        "myInfo/main",
        "invigilate/main",
        "addScore/main",
        "comment/main",
        "commentInfo/main",
        "calendar/main"
      ]
    }
  ]

2. tabBar 导航标签

    app.json

  "tabBar": {
    "color": "#999999",
    "selectedColor": "#1663A7",
    "list": [
      {
        "selectedIconPath": "/static/images/tab_active1.png",
        "iconPath": "/static/images/tab1.png",
        "pagePath": "pages/index/main",
        "text": "首页"
      },
      {
        "selectedIconPath": "/static/images/tab_active2.png",
        "iconPath": "/static/images/tab2.png",
        "pagePath": "pages/cultivate/main",
        "text": "培训"
      },
      {
        "selectedIconPath": "/static/images/tab_active3.png",
        "iconPath": "/static/images/tab3.png",
        "pagePath": "pages/exam/main",
        "text": "测评"
      },
      {
        "selectedIconPath": "/static/images/tab_active4.png",
        "iconPath": "/static/images/tab4.png",
        "pagePath": "pages/my/main",
        "text": "我的"
      }
    ]
  }

3. 文件下载

wx.downloadFile({
   url: url, //仅为示例,并非真实的资源
   success (res) {
       // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
       const filePath = res.tempFilePath
       that.downloadFile(filePath)
   },
   fail: function(res) {
       wx.showToast({
          title: '下载失败',
          icon: 'error',
          duration: 2000
       })
   }
})

下载完之后打开文件

wx.openDocument({
  filePath: filePath,
  success: function(res) {
    console.log('打开文档成功')
  },
  fail: function(res) {
    console.log('打开失败')
    console.log(res)
  },
  complete: function(res) {
    console.log(res)
  }
})

4. 日历组件 https://www.npmjs.com/package/mpvue-calendar

    找到合适的日历组件mpvue-calendar  各种点击时间,标记日期

    a、npm i mpvue-calendar

    b、代码

<Calendar
   ref="calendar"
   :events="events"
   :now="false"
   clean
   @select="select"
/>

events: {} // 有监考事件的日期 格式{'2018-10-7': '内容'}

select(val, info) {
  if (this.jkInfo[info.date]) {
     this.chooseJkInfo = this.jkInfo[info.date]
     console.log(this.chooseJkInfo)
  } else {
     this.chooseJkInfo = null
  }
},

5. 路由跳转 navigateTo 和 redirectTo的区别

    navigateTo: (navigate中文意思是导航),可以想象成目录的那种结构,从父页面导航到下一个子页面,然后还可以再回退到父目录

    redirectTo: (redirect重新定向)在当前页面直接重定向到另一个页面,所以也不存在回退到原页面的情况。

6. vant 双向绑定问题 value

    van-field input框改变内容,value对应的数据并没有改变。要用自己在失去焦点的时候手动改变

<van-field
    v-model="userInfo.sfzhm"
    :error-message="rules.sfzhm"
    label="身份证"
    placeholder="请输入身份证"
    input-align="right"
    @blur="onChange('sfzhm', $event)"
/>

onChange(type, event) {
   // 修改
   this.userInfo[type] = event.mp.detail.value 
},

7. van-popup  下拉弹框

<van-popup :show="showBMPicker" position="bottom">
  <van-picker
     show-toolbar
     :columns="bmList"
     @cancel="showBMPicker = false"
     @confirm="submitBM"
  />
</van-popup>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值