这两天由于学习需要,需要用vue来调用api接口,但是以前没怎么接触过用vue来调用接口,不会没关系,发挥我们强大的学习能力,都不是事,学习了半天基本也就可以初级上手了,写篇随笔记录下来,方便以后回顾。当然童鞋们有更好的意见的请留言,一起学习进步。

  本次demo实现的是简单的百度搜索页面,用到了vue和百度接口,采用了单页实现,没有使用vue-cli。最初,要用vue实现接口功能我很懵,就去找资料查阅,网上的资料乱七八糟,bug满篇。最后自己借鉴“前人”的经验,在修改了所有bug,又完善了一些用户体验后,一个简单的百度搜索界面出来了。今天废话有点多。可能是开学一个月了有点烦躁。话不多说,开门见山!

  vue实例的建立挂载这里不多讲,可以去官网看文档。首先看<body>最终布局:下图

  

最外层的<div>作为根元素挂载vue实例,不能有兄弟标签。第二个<div>标签作为输入、点击的div,里面包含一个<input>、<button>.

input双向绑定了“t1”作为关键词输入,接着绑定了三个监听事件,get函数是获取接口以及返回数据、判断键盘事件的重要函数,keydown.down和up是解决我们输入关键词后得到了一连串的相关搜索数据显示在屏幕上的时候,需要用到上下键去选择我们需要的信息,并且带有简单的动画效果,即上下键选中哪个关键词,该词条就会显示为灰色以示提醒。button按钮添加了handleClick事件,虽然有点鸡肋(谁会去点击搜索呢,都是直接enter键),但button总不能啥都不干吧?输入关键词后,百度api为我们找的了一系列相近词条,得到这些词条,再把她们显示在搜框下部,这里用循环<li>来实现,并且动态绑定li的CSS样式。在给li添加了点击事件,用鼠标点击时,直接跳转百度该词条。接着上图:

  

  data里面提前配置了需要用到的数据,searchList保存api返回的相近词条、t1 为输入的关键词、now用作li的动态样式,确定哪一个词是当前选中的词条、index初始的Li索引值,用作鼠标点击下拉的某个词条时,可以明确得到该词条。继续上图:

  

重点是 $http.jsonp()方法,完美解决了跨域请求数据。不过本章篇幅有限,不多讲,可以自己看文档理解。触发get后,进行一个异步回调,回调的结果,若成功,请求来的数据赋给searchList数组保存,失败则报错。(res.body.s是数据接口中的一个数组)。再判断键盘事件,点击的是enter(键盘码13),打开百度窗口并带上关键词“t1”,若键盘事件是Backspace(键盘码8),直接将now赋值-1,这个我最后修改bug时添加的,因为当关键词不符合我们预期,用户进行回删时,下拉相近词条已经变化,但我们的灰色选中条却没变化,导致input输入框中的内容与灰色选中条内容不符,故回删时,重新初始now的值为-1,配合下图的 now++,当now+1变为0时,刚好对应searchList数组中的第一条数据。看图:

  

原理大同小异,上下键的选择就是控制了now的值,然后把seachList[now]的值在赋给关键词“t1”,达到选中框和input中的关键词一致的效果。searchLink函数从<li>那里带回来了当前li元素的index,利用index得到关键词,进行接口调用,(接口可以在百度->f12->network中找到),最后button事件,handleClick和input以及li没直接关联,所以也最简单,直接拿到“t1”就可以了。

 作者博客:https://home.cnblogs.com/u/fanghl/

 码字不易,相互理解,本着分享知识的乐趣,转载请注明出处!!

最后,上张图看下效果:

上下键(第二张图)的效果。欢迎留言共同谈论。夜深了,码字容易影响舍友睡觉,获取接口以及跨域请求($http.jsonp())改天在单独总结。

 作者博客:https://home.cnblogs.com/u/fanghl/

 码字不易,相互理解,本着分享知识的乐趣,转载请注明出处!!

  

Vue调用百度接口做百度搜索的更多相关文章

  1. python 调用百度接口 做人脸识别

    操作步骤差不多,记得要在百度AIPI中的控制台中创建对应的工单 创建工单成功后 会生成两个key  这个两个key是要生成tokn 用 这里大家可以用 def函数 将token返回 供下面的接口使用 ...

  2. 解决Vue调用springboot接口403跨域问题

    最近在做一个前后端分离的项目, 前端用的是Vue后端使用的是springboot, 在项目整合的时候发现前端调用后端接口报错403跨域请求问题 前端跨域请求已解决, 那么问题就出在后端了, 找了一些资 ...

  3. vue 调用第三方接口配置

    1.配置proxyTable 3.调用接口,将接口地址替换为配置的‘/api’

  4. vue调用支付接口

    html: <div class="paymentHtml" v-html="paymentHtml"></div> script: d ...

  5. Python调用百度接口(情感倾向分析)和讯飞接口(语音识别、关键词提取)处理音频文件

    本示例的过程是: 1. 音频转文本 2. 利用文本获取情感倾向分析结果 3. 利用文本获取关键词提取 首先是讯飞的语音识别模块.在这里可以找到非实时语音转写的相关文档以及 Python 示例.我略作了 ...

  6. Android学习笔记之使用百度地图实现Poi搜索

    PS:装个系统装了一天.心力憔悴.感觉不会再爱了. 学习内容: 1.使用百度Map实现Poi搜索. 2.短串分享 3.在线建议查询   百度地图的研究也算是过半了.能够实现定位,实现相关信息的搜索,实 ...

  7. 百度和 Google 的搜索技术是一个量级吗?

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Kenny Chao 链接:http://www.zhihu.com/question/22447908/answer/2 ...

  8. php获取ios或android通过文件头(header)传过来的坐标,通过百度接口获取具体城市和地址,并存入到session中。

    首先,在function.php方法文件中封装一个获取header头文件的方法. if (!function_exists('getallheaders')) { function getallhea ...

  9. 百度地图API地点搜索-获取经纬度

    分享一下地图上的地点搜索和鼠标点击获取地点经纬度,这些都是地图比较基本和实用的代码,其中还包括了根据用户IP进行地图的显示.改变地图上的鼠标样式.启用滚轮缩放等,算是半入门吧,其他的一些可以自己参考百 ...

随机推荐

  1. IIS相关

    使用aspnet_regiis.exe重新注册.NET Framework 重新安装IIS以后,需要用aspnet_regiis.exe来注册.NET Framework, 如下: C:\WINDOW ...

  2. usermod - linux修改用户帐户信息

    usermod - 修改用户帐户信息 modify a user account usermod [options] user_name usermod 命令修改系统帐户文件来反映通过命令行指定的变化 ...

  3. chm开源文档制作

    作为开发人员,API文档是非常关键的^_^,但是很多时候官方提供的文档是html的docs,不方便于携带查询,本章主要介绍chm文档的制作方法. 使用jd2chm制作chm文档 安装之前必须先安装 h ...

  4. 编辑器之神---vim

    1. 不是在命令模式下时:yy   -----复制光标所在的这一行              p  ----粘贴      dd  -----剪切光标所在的行 D ---从当前的光标开始剪切,一直到行 ...

  5. iOS项目之NSLog相关

    这算是在项目中最常用的命令了,方便程序员查看日志数据,便于程序调试.在开发中我们经常会进行一些设置,下面就来简单的说一说: 先来看看普通的NSLog: - (void)viewDidLoad { [s ...

  6. SliverList , SliverFixedExtentList

    SliverList 高度自动, SliverFixedExtentList 高度固定死. CustomScrollView( slivers:[ SliverList( delegate: Sliv ...

  7. 使用pm2-zabbix监控node工程

    环境 centos 7 zabbix 3.2.6 node 4.4.3 安装 # wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix ...

  8. Oracle之with as和update用法

    许久不用,又忘了,做个记录 update test b set b.code=(with t as(select t.id,code||'_'||row_number() over(partition ...

  9. STAT UN2102 Homework

    STAT UN2102 Homework 4 [100 pts]Due 11:59pm Monday, May 6th on CanvasYour homework should be submitt ...

  10. bzoj千题计划168:bzoj3513: [MUTC2013]idiots

    http://www.lydsy.com/JudgeOnline/problem.php?id=3513 组成三角形的条件:a+b>c 其中,a<c,b<c 若已知 两条线段之和=i ...