(5)“学习选择”的js源代码

本节我们来实现页面的功能,给出“学习选择”的js源代码。

// pages/xuexixz/xuexixz.js
Page({

  data: {
   
    multiArray: [['国学', '科学'], ['题库一', '题库二', '题库三', '题库四', '题库五', '题库六', '题库七', '题库八']],
    objectMultiArray: [
      [
        {
          id: 0,
          name: '国学'
        },
        {
          id: 1,
          name: '科学'
        }
      ],
      
      [
        {
          id: 0,
          name: '题库一'
        },
        {
          id: 1,
          name: '题库二'
        },
        {
          id: 2,
          name: '题库三'
        },
        {
          id: 3,
          name: '题库四'
        },
        {
          id: 4,
          name: '题库五'
        },
        {
          id: 5,
          name: '题库六'
        },
        {
          id: 6,
          name: '题库七'
        },
        {
          id: 7,
          name: '题库八'
        }
      ]
    ],
    multiIndex: [0,0],
      
    
  },

 
  bindMultiPickerChange: function (e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      multiIndex: e.detail.value,
    })
    var tikuzhi = this.data.multiIndex[0].toString() + this.data.multiIndex[1].toString()
    wx.setStorage({
      key: 'tikuzhi',
      data: tikuzhi,
    })
    console.log(tikuzhi)
    var global = getApp()
    global.tikuleixing = this.data.multiArray[0][this.data.multiIndex[0]]
    global.tikuxuhao   = this.data.multiArray[1][this.data.multiIndex[1]]
     
  },

  bindMultiPickerColumnChange: function (e) {
    console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
    var data = {
      multiArray: this.data.multiArray,
      multiIndex: this.data.multiIndex
    };
    data.multiIndex[e.detail.column] = e.detail.value;
    switch (e.detail.column) {
      case 0:
        switch (data.multiIndex[0]) {
          case 0:
            data.multiArray[1] = ['题库一', '题库二', '题库三', '题库四', '题库五', '题库六', '题库七', '题库八'];
            
            break;
          case 1:
            data.multiArray[1] = ['五 下'];
            
            break;
        }
        data.multiIndex[1] = 0;
        data.multiIndex[2] = 0;
        break;
      
        data.multiIndex[2] = 0;
        console.log(data.multiIndex);
        break;
    }
    this.setData(data);
  },
 
 study:function(e){
       wx.navigateTo({
      
      url: '/pages/xuexizh/xuexizh',
      success: function(res) {
        
      },
      fail: function(res) {},
      complete: function(res) {},
    })
  },
 
  onLoad: function (options) {
    var global = getApp()

    global.tikuleixing = this.data.multiArray[0][this.data.multiIndex[0]]
    global.tikuxuhao = this.data.multiArray[1][this.data.multiIndex[1]]
  },

  
  onReady: function () {

  },

 
  onShow: function () {

  },

 
  onHide: function () {

  },

 
  onUnload: function () {

  },

 
  onPullDownRefresh: function () {

  },

  
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    return {
      title: '大家一起学',
     
    }
  }
})

这里要注意几点:

  • 多列选择器的选择结果是,数值型数组的形式,云数据库中数据集合的名称字符串的形式,所以用了字符串转换 .toString()
  • 这里我练习使用页面间传值,用了wx.setStorage
  • 如果为了更简洁,可以用全局变量。我练习使用全局变量,用了global=getApp()

另外一点说明:
如果使用的是单列选择器picker控件,它的下标是从0开始的,获取到的 e.detail.value 这个值就会是字符串的形式。
如果要对它进行数学处理,就需要先把它转换成数字型格式。需要用到parseInt()函数,它的作用是把字符串转换为数字。

/*
  picker的下标是从0开始的,这里练习把它的值转换成数字然后 +1
  并且把选择的题库赋给tikuzhi,传递给缓存,进行页面间传值
*/
var tikuzhi =parseInt(e.detail.value)+1;
wx.setStorage({
  key: 'tikuzhi',
  data: tikuzhi,
})
//parseInt()函数,把字符串转换为数字
//toString(),把数字转换为字符串