1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // components/My_switch/index.js
- Component({
- /**
- * 组件的属性列表
- */
- properties: {
- list: {
- type: Array,
- value: ['最新', '最热']
- },
- change: {
- type: Function
- },
- sort: {
- type: Array
- },
- reversed: {
- type: Number,
- value: 0
- }
- },
- lifetimes: {
- ready: function () {
- const that = this;
- let query = wx.createSelectorQuery().in(this)
- query.select('.switch-box').boundingClientRect();
- query.exec(function (res) {
- that.setData({
- baseLeft: res[0].left
- })
- that.chengeSelect()
- })
- }
- },
- /**
- * 组件的初始数据
- */
- data: {
- checkedItem: 0, //选中项
- animationData: {}, //横线平移动画
- baseLeft: 0,
- },
- /**
- * 组件的方法列表
- */
- methods: {
- changeSwitch(e) {
- this.setData({
- checkedItem: this.data.checkedItem == 0 ? 1 : 0
- })
- let name = this.data.list[this.data.checkedItem],
- sort = this.data.sort;
- for (let i = 0; i < sort.length; i++) {
- sort[i].sorted = sort[i].sortname == name ? 1 : 0;
- sort[i].reversed = this.data.reversed
- }
- this.triggerEvent('change', sort)
- this.chengeSelect()
- },
- chengeSelect() {
- let animation = wx.createAnimation({
- duration: 1000,
- timingFunction: 'ease',
- })
- let that = this;
- let query = wx.createSelectorQuery().in(this)
- query.select('.active').boundingClientRect();
- query.exec(function (res) {
- animation.translate(res[0].left - that.data.baseLeft + 2).step({
- duration: 300
- })
- that.setData({
- animationData: animation.export()
- })
- })
- }
- }
- })
|