vue 模拟百度搜索

最终效果:

Baidusearch.vue所有代码:

<template>
    <div>
      <div class="container" id="app">
        <div class="page-header">
          <h2 class=" text-center text-primary">百度搜索案例</h2>
        </div>
        <form action="">
          <div class=" form-group">
            <input v-model="wd" @keyup="keyup($event)" @keydown="keydown($event)" type="text" class="form-control" />
            <ul class="list-group">
              <li class="list-group-item list-group-item-text" v-for="(item,index) in arr" :class="{'list-group-item-info':index==listIndex}" @click="click($event)">{{item}}</li>
            </ul>
          </div>
        </form>
      </div>
    </div>
</template>

<script>
    export default {
        name: "Baidusearch",
      data(){
          return{
            wd:'',//搜索的关键词
            arr:[],//用于储存关键词的搜索词条
            listIndex:-1//设置初始索引,数组从0开始,因此初始成-1
          }
      },
      methods:{
        //这个函数我们在input标签输入关键词的时候不断的给百度服务器发送请求获取搜索词条,并且不断的复制给data中的数组arr
        keyup(event){
          //如果我按的是上下键,那么就不发送请求了
          console.log(event);
          if(event.keyCode==38||event.keyCode==40||event.keyCode==13) return ;
          var url="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su"
          this.$http.jsonp(url,{
            params:{
              wd:this.wd
            },
            jsonp:'cb'
          }).then(res=>{
            console.log(res);
            this.arr=res.data.s;//把百度服务器返回的数据传给arr数组
          })
        },
        //监听鼠标的点击事件
        //如果鼠标点击某一行的文字,则点击事件中的event.explicitOriginalTarget.data代表关键词
        //如果点击某一行的空白处,则点击事件中的event.explicitOriginalTarget.innerText代表关键词
        //大家可以通过console.log(event)来查看关键词所在的位置
        click(event){
          console.log(event);
          if(event.explicitOriginalTarget.data!=undefined){
            this.wd=event.explicitOriginalTarget.data;
            window.open("https://www.baidu.com/s?wd="+this.wd);
          }else if(event.explicitOriginalTarget.innerText!=undefined){
            this.wd=event.explicitOriginalTarget.innerText;
            window.open("https://www.baidu.com/s?wd="+this.wd);
          }
        },
        //监听键盘的事件
        //如果按down,则增加当前listIndex+1,因此arr[this.listIndex]就能代表当前的词条
        //我们通过对listIndex的修改来得到当前词条在arr中的索引,然后就可以得到词条的具体信息,然后发送请求了
        keydown(event){
          console.log(event);
          //下键:40 上键:38
          if(event.keyCode==38){
            //按的上键
            this.listIndex--;
            if(this.listIndex<0){
              this.listIndex=this.arr.length-1;
            }
            this.wd=this.arr[this.listIndex];
          }
          else if(event.keyCode==40){
            //说明你按的是下键
            this.listIndex++;
            if(this.listIndex>this.arr.length-1){
              this.listIndex=0;
            }
            this.wd=this.arr[this.listIndex];
          }else if(event.keyCode==13){
            //如果你按的是enter,那么就跳转到百度搜索结果
            window.open("https://www.baidu.com/s?wd="+this.wd);
          }

        }
      }
    }
</script>

<style scoped>

</style>

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vue中使用百度地图搜索,你可以按照以下步骤进行操作: 1. 首先,确保你已经在项目中安装了百度地图的JavaScript API。可以在`index.html`文件中引入百度地图的API脚本,如下所示: ```html <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=YOUR_API_KEY"></script> ``` 请将`YOUR_API_KEY`替换为你自己的百度地图API密钥。 2. 在Vue组件中,你可以使用`mounted`生命周期钩子来初始化地图并添加搜索功能。首先,创建一个包含地图的容器元素: ```html <template> <div id="mapContainer"></div> </template> ``` 3. 在Vue组件的`mounted`方法中,初始化地图并添加搜索功能: ```javascript mounted() { // 初始化地图 const map = new BMap.Map("mapContainer"); // 添加地图控件 map.addControl(new BMap.NavigationControl()); map.addControl(new BMap.ScaleControl()); // 创建一个本地搜索对象 const localSearch = new BMap.LocalSearch(map, { renderOptions: { map: map } }); // 监听搜索按钮点击事件 const searchButton = document.getElementById("searchButton"); searchButton.addEventListener("click", () => { const keyword = document.getElementById("keyword").value; localSearch.search(keyword); }); } ``` 4. 在模板中添加搜索表单和按钮: ```html <template> <div> <input type="text" id="keyword" placeholder="输入关键词"> <button id="searchButton">搜索</button> </div> <div id="mapContainer"></div> </template> ``` 这样,你就可以在Vue中使用百度地图搜索功能了。记得将`YOUR_API_KEY`替换为你自己的百度地图API密钥。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值