个人项目总结(wepy)

事件冒泡

  • e.target.dataset获取的是一个对象,如果我们要获取index索引需要:Object.values(e.target.dataset)+''
  • 微信小程序需要通过this.setData({msg:''})来动态改变data,如果需要改变的data是一个数组的其中一项,需要:this.setData({'array['+idx+'].m':''})

18/6/13更新:
现在改成用wepy来构建小程序了

  • wepy中用@tap来代替微信小程序的bindtap,而且传参只能传入字符串值,因此(貌似)无法实现事件委托
  • wx:for在wepy中要用标签来表示,如
    然后今天实现的是列表渲染的picker,初始化是筛选条件,在选中元素后改变为相应的值:
//wxml
for="{{navItems}}" key="idx" index="idx" item="item">
    "{{item.mode}}" value="{{item.value}}" start="{{item.start}}" end="{{item.end}}" bindchange="pickerChange" range="{{item.array}}" @tap="itemClick({{idx}})">
    "nav-body-item">{{item.title}}
  


//script
data = {
      id:0,
      navItems:[
        {
          value:'',
          title:'按时间',
          mode:'date',
          start:'2018-05-01',
          end:'2018-09-01',
          array:[]
        },
        {
          value:0,
          title:'按学校',
          mode:'selector',
          start:'',
          end:'',
          array:['全部','中南大学','湖南大学','湖南师范大学']

        },
        {
          value:0,
          title:'按岗位',
          mode:'selector',
          start:'',
          end:'',
          array:['全部','技术/研发类','产品/项目类','市场类','设计类','职能类','内容编辑类','客户服务类']
        },
        {
          value:0,
          title:'按公司地点',
          mode:'selector',
          start:'',
          end:'',
          array:['全国','华东地区(山东、江苏、安徽、浙江、福建、上海)','华南(广东、广西、海南)','华中(湖北、湖南、河南、江西)','华北(北京、天津、河北、山西、内蒙古)','西北(宁夏、新疆、青海、陕西、甘肃)','西南(四川、云南、贵州、西藏、重庆)','东北(辽宁、吉林、黑龙江)','港澳台']
        }
      ]
}
methods={
  pickerChange(e){
    this.navItems[this.id].value=e.detail.value
    //改变当前picker的value,这样在第二次点击时会从第一次选择的值开始选
    this.navItems[this.id].title=(e.detail.value-0)+''==='NaN'?e.detail.value:this.navItems[this.id].array[e.detail.value];
//判断当前是哪个picker,因为时间picker跟选择器picker不一样,value是当前选择的时间(string),普通选择器是number;e.detail.value-0会使string强制转化为number,后续使用+‘’来返回string是因为我们现在要判断(e.detail.value-0)是否为NaN,但是NaN不等于自身,所以要转化为string
  },
  itemClick(idx){//传入当前触发事件的idx
    this.id=idx;
  }
}

你可能感兴趣的:(项目)