select.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Componet/Componet.js
  2. Component({
  3. /**
  4. * 组件的属性列表
  5. */
  6. properties: {
  7. propArray:{
  8. type:Array,
  9. }
  10. },
  11. /**
  12. * 组件的初始数据
  13. */
  14. data: {
  15. selectShow:false,//初始option不显示
  16. nowText:"请选择",//初始内容
  17. animationData:{}//右边箭头的动画
  18. },
  19. /**
  20. * 组件的方法列表
  21. */
  22. methods: {
  23.    //option的显示与否
  24. selectToggle:function(){
  25. var nowShow=this.data.selectShow;//获取当前option显示的状态
  26. //创建动画
  27. var animation = wx.createAnimation({
  28. timingFunction:"ease"
  29. })
  30. this.animation=animation;
  31. if(nowShow){
  32. animation.rotate(0).step();
  33. this.setData({
  34. animationData: animation.export()
  35. })
  36. }else{
  37. animation.rotate(180).step();
  38. this.setData({
  39. animationData: animation.export()
  40. })
  41. }
  42. this.setData({
  43. selectShow: !nowShow
  44. })
  45. },
  46. //设置内容
  47. setText:function(e){
  48. var nowData = this.properties.propArray;//当前option的数据是引入组件的页面传过来的,所以这里获取数据只有通过this.properties
  49. var nowIdx = e.target.dataset.index;//当前点击的索引
  50. var nowText = nowData[nowIdx].text;//当前点击的内容
  51. //再次执行动画,注意这里一定,一定,一定是this.animation来使用动画
  52. this.animation.rotate(0).step();
  53. this.setData({
  54. selectShow: false,
  55. nowText:nowText,
  56. animationData: this.animation.export()
  57. })
  58. }
  59. }
  60. })