uni-app实现搜索跳转功能

2022-09-08 15:59:08 浏览数 (2)

功能描述:点击导航栏跳转到搜索页,并在搜索页完成数据检索,数据渲染

1.监听index.vue的搜索框

代码语言:javascript复制
//监听点击导航栏搜索框
onNavigationBarSearchInputClicked(){
    //跳转搜索页面
    uni.navigateTo({
        url:'../search/search'
    })
},

2.新键搜索页面search.vue

代码语言:javascript复制
<template>
    <view>
        <template v-if="searchList.length===0">
            <!-- 搜索历史 -->
            <view class="py-2 font-md px-2">搜索历史</view>
            <view class="flex flex-wrap">
            <!-- 历史记录 -->
                <view class="border rounded font mx-2 my-10 px-2"
                v-for="item,index in list" 
                :key="index"
                hover-class="bg-light"
                @click="clickSearchHistory(item)">{{item}}</view>
            </view>
        </template>
        <!-- 数据列表 -->
        <block v-for="item,index in searchList" :key="index">
            <commonList :item="item" :index="index"></commonList>
        </block>
    </view>
</template>

我们在历史记录元素添加了click事件,这个事件触发历史记录函数完成历史搜索,下文展示。

3.配置pages.json

代码语言:javascript复制
{
    "path" : "pages/search/search",
    "style" : {
    //导航配置
    "app-plus":{
        "titleNView":{
            //搜索框
            "searchInput":{
                "align":"center",
                "backgroundColor":"#f5f4f2",
                "borderRadius":"4px",
                "disabled":false,
                "placeholder":"搜索帖子"
            },
            "buttons":[
                {
                    "color":"#333333",
                    "colorPressed":"#fd597c",
                    "float":"right",
                    "fontSize":"14px",
                    "text":"搜索"
                }

            ]
        }
    }
    }
}

搜索相关

代码语言:javascript复制
<script>
    import demo from '@/newsdata.js'//导入新闻数据
    import commonList from "@/components/common/common-list.vue"
    export default {
        components:{commonList},
        data() {
            return {
                searchText:"",
                list:['测试历史','211321','程序员']
                //搜索结果
                searchList:[]
                
            }
        },
        //监听导航输入
        onNavigationBarSearchInputChanged(e){
            // console.log(e)
            this.searchText=e.text
        },
        //监听导航搜索按钮
        onNavigationBarButtonTap(e){
            //如果索引==0表示搜索按钮点击
            if(e.index==0)this.searchEvent()
            
        },
        methods: {
            //点击搜索历史
            clickSearchHistory(text){
                this.searchText = text//获取历史记录
                this.searchEvent()//调用搜索事件
            },
            searchEvent(){
                //收起键盘
                uni.hideKeyboard()
                // //请求搜索
                //loading
                uni.showLoading({
                    title: '加载中...',
                    mask: false
                });
                setTimeout(()=>{
                    this.searchList = demo
                    //隐藏loading
                    uni.hideLoading()
                },3000)
                
                console.log(this.searchList)
            }
        }
    }
</script>

0 人点赞