| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | // components/My_switch/index.jsComponent({    /**     * 组件的属性列表     */    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()                })            })        }    }})
 |