import { getCategoryWorks, searchWorks } from '~/api/works' import reachBottom from '~/mixins/reachBottom' import { createStoreBindings } from 'mobx-miniprogram-bindings' import { store } from '~/store/index' let storeBindings Page({ behaviors: [reachBottom], data: { // class为二级,search为搜索 type: 'class', categoryList: [], childType: '', currentIndex: 0, scrollTop: 0, text: '', currentId: '', navBarTitle: '', historySearch: [] }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { // 没有二级分类 if (options.id) { this.setData({ childType: options.id }) this.resetData() } else if (options.list) { let categoryList = JSON.parse(decodeURIComponent(options.list)) this.setData({ categoryList }) this.resetData() } wx.setNavigationBarTitle({ title: options.title || '搜索' }) this.setData({ type: options.type, historySearch: wx.getStorageSync('search'), navBarTitle: options.title }) this.storeBindings = createStoreBindings(this, { store, fields: { userInfo: 'userInfo' }, }) // 立刻更新 this.storeBindings.updateStoreBindings() }, // 获取分类的内容 loadMore() { if (this.data.type == 'search') { return } let columnId = this.data.childType ? this.data.childType : this.data.categoryList[this.data.currentIndex].id this.getData(getCategoryWorks, { columnId }) }, setClass({ currentTarget }) { this.setData({ scrollTop: 0, navBarTitle: currentTarget.dataset.title, currentIndex: currentTarget.dataset.index, currentId: `class${currentTarget.dataset.index}` }) this.resetData() }, setSearch({ detail }) { this.setData({ text: detail.value }) }, async search() { if (!this.data.text) { this.setData({ list: [] }) return } let list = await searchWorks({ title: this.data.text, grade: this.data.userInfo.grade }) if (!this.data.historySearch.includes(this.data.text)) { this.setData({ historySearch: [...this.data.historySearch, this.data.text] }) } this.setData({ list, }) wx.setStorageSync('search', this.data.historySearch) }, historySearch({ currentTarget }) { this.setData({ text: currentTarget.dataset.text }) this.search() }, deleteHistory({ currentTarget }) { let newList = this.data.historySearch.filter(item => { return item != currentTarget.dataset.text }) this.setData({ historySearch: newList }) wx.setStorageSync('search', newList) }, goRead({ currentTarget }) { wx.navigateTo({ url: `/pages/reading/index?videoId=${currentTarget.dataset.id}&navBarTitle=${this.data.navBarTitle||''}` }) }, onUnload() { this.storeBindings.destroyStoreBindings() }, })