微信小程序开发过程中总结的注意事项

1、picker从后台动态取值

 <picker bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
    <view class="picker">
      区域:{{objectArray[index].name}}
    </view>
  </picker>

 array: ['环翠区', '高区', '经区', '其他'],

 objectArray: [
      {
        id: 12,
        name: '环翠区'
      },
      {
        id: 13,
        name: '高区'
      },
      {
        id: 14,
        name: '经区'
      },
      {
        id: 15,
        name: '其他'
      }
    ],
  },
  bindPickerChange: function(e) {
    console.log('picker发送选择改变,携带值为', tobjectArray[e.detail.value]) //这个值只是角标的顺序值

  console.log('picker发送选择改变,携带值为', this.data. objectArray[e.detail.value].id) //这样才能取到真正的ID值

}

2、wx.request从后台取值成功不能用 that.setData({.......})会报错"this.setData is not a function;at api request success callback function"

必须写成var that=this  

完整例子:

data: {
    logs:[]
  },
onLoad:function(){
this.getdata();
 
}
getdata:function(){//定义函数名称
var that=this;   // 这个地方非常重要,重置data{}里数据时候setData方法的this应为以及函数的this, 如果在下方的sucess直接写this就变成了wx.request()的this了
    wx.request({
      url:'http://www.phonegap100.com/appapi.php?a=getPortalCate',//请求地址
      data:{//发送给后台的数据
        name:"bella",
        age:20
      },
      header:{//请求头
        "Content-Type":"applciation/json"
      },
      method:"GET",//get为默认方法/POST
      success:function(res){
        console.log(res.data);//res.data相当于ajax里面的data,为后台返回的数据
      that.setData({//如果在sucess直接写this就变成了wx.request()的this了.必须为getdata函数的this,不然无法重置调用函数
 
      logs:res.data.result
 
          })
 
      },
      fail:function(err){},//请求失败
      complete:function(){}//请求完成后执行的函数
    })
  },
  wxml页面:
 
<view  wx:for="{{logs}}" wx:for-item="value">
  {{value.catname}}
</view>

 3、界面A.wxml参数值传递

<view class="nav_top_items" bindtap="switchTab " data-id="{{item.id}}">
逻辑处理A.js里发送
   // 跳转至详情页
  navigateDetail: function(e){
    wx.navigateTo({
        url:'../detail/detail?artype=' + e.currentTarget.dataset.id
     
    })
  },
逻辑B.js接收参数值
 onLoad: function (options) {
    this.setData({
      id:options.id
    })    
  },
 

4、小程序参数传值

现在已知传递参数的方法只找到三种,先总结下:

1.APP.js

我把常用且不会更改的参数放在APP.js的data里面了.在各个page中都可以拿到var app = getApp();

app上就可以拿到存在data中的参数.


2. wx.navigateTo({})中URL携带参数

demo中已经写出:

 wx.navigateTo({
      url: "../newpage/newpage?infofromindex=" + this.data.infofromindex,
  });

传值:在navigator的属性url后拼接?id(参数名字)=要传递的值 (如果多个参数用&分开 &name=value&.......)

页面间传递参数的笔记


3.wx.setStorage(OBJECT) 数据缓存

微信开发文档中的数据缓存方法:

①存储数据

 try {
      wx.setStorageSync('infofrominput', this.data.infofrominput)
    } catch (e) {
 }

②获取数据

  //获取
        wx.getStorage({
            key: 'infofrominput',
            success: function (res) {
                _this.setData({
                    infofromstorage: res.data,
                })
            }
        })


5、从一个JS引用另一个JS中的方法

先在当前JS中引用

var fileData = require('../../utils/data.js')


被引用的js需要暴露接口才可以被引用到,不然会报{{page}}错误

/*
 * 对外暴露接口
 */ 
module.exports = {
  getBannerData : getBannerData,
  getpockrooms:getpockrooms

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值