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

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  

完整例子:

[javascript]  view plain  copy
  1. data: {  
  2.     logs:[]  
  3.   },  
  4. onLoad:function(){  
  5. this.getdata();  
  6.    
  7. }  
  8. getdata:function(){//定义函数名称  
  9. var that=this;   // 这个地方非常重要,重置data{}里数据时候setData方法的this应为以及函数的this, 如果在下方的sucess直接写this就变成了wx.request()的this了  
  10.     wx.request({  
  11.       url:'http://www.phonegap100.com/appapi.php?a=getPortalCate',//请求地址  
  12.       data:{//发送给后台的数据  
  13.         name:"bella",  
  14.         age:20  
  15.       },  
  16.       header:{//请求头  
  17.         "Content-Type":"applciation/json"  
  18.       },  
  19.       method:"GET",//get为默认方法/POST  
  20.       success:function(res){  
  21.         console.log(res.data);//res.data相当于ajax里面的data,为后台返回的数据  
  22.       that.setData({//如果在sucess直接写this就变成了wx.request()的this了.必须为getdata函数的this,不然无法重置调用函数  
  23.    
  24.       logs:res.data.result  
  25.    
  26.           })  
  27.    
  28.       },  
  29.       fail:function(err){},//请求失败  
  30.       complete:function(){}//请求完成后执行的函数  
  31.     })  
  32.   },  
  33.   wxml页面:  
  34.    
  35. <view  wx:for="{{logs}}" wx:for-item="value">  
  36.   {{value.catname}}  
  37. </view>  

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

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

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

}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值