Vue 百度搜索
来源:互联网 发布:c语言switch语句例子 编辑:程序博客网 时间:2024/06/08 17:49
使用Vue和JSONP获取百度的搜索结果
任务:
1. 输入结果,立刻返回百度搜索结果,并展示
2. 键盘上下键可以选中结果列表,增加样式
3. 选中后按回车,跳转到百度搜索页面
效果图:
html:
<div id="app"> <input class="search" type="text" value="按钮" v-model="search" @keyup="get($event)" @keydown.down="changeDown()" @keydown.up.prevent="changeUp()"> <ul class="item-wrap"> <li v-for="(value, $index) in myData" :class="{gray:$index == now}"> {{value}} </li> </ul> <p class="msg" v-show="myData.length == 0">暂无数据...</p></div>
数据结构为:
data:{ myData: [], search: '', now: -1}
1. 搜索
v-model="search"
数据双向绑定和@keyup="get($event)"
键盘事件,使搜索立即响应
以下为get函数:
jsonp使用的是vue-resource的$http.jsonp
get:function (e) { this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{ params:{ wd: this.search // 传入的参数 }, jsonp:'cb' // callback }).then(function (res) { // 成功 this.myData = res.data.s; },function (res) { // 错误 console.log(res); });}
百度路径如下
百度搜索:https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=vue&cb=show
返回的结果为: show({q:"vue",p:false,s:["vue.js","vue.js 教程","vue.js 视频教程","vuex","vue-router","vue cli","vue computed","vue ui","vue2","vue watch"]});
可以使用res.data.s获取数组里的数据。
2. 键盘控制:
2.1结果列表的样式改变
<li v-for="(value, $index) in myData" :class="{gray:$index == now}"> {{value}}</li>
当键盘上下键事件改变变量now,与下标相等时,添加gray
class,达到改变样式的目的
2.2上下键事件
@keydown.down="changeDown()" @keydown.up.prevent="changeUp()"
使用键盘事件的简写@和.down、.up,还有阻止默认事件.prevent
changeDown:function () { this.now ++; if (this.now == this.myData.length) { this.now = -1; } this.search = this.myData[this.now];},changeUp:function () { this.now --; if (this.now == -2) { this.now = this.myData.length-1; } this.search = this.myData[this.now];}
上下键绑定了input输入框的数据
3. 回车搜索
get函数中增加键盘事件
取消了上下键事件,否则上下键事件使之重复搜索
当点击回车时,打开新窗口,显式搜索结果页面
if (e.keyCode == 38 || e.keyCode == 40) { return;}if (e.keyCode == 13) { window.open('https://www.baidu.com/s?wd=' + this.search); this.search = '';}
完整js代码:
window.onload = function () { var app = new Vue({ el: '#app', data:{ myData: [], search: '', now: -1 }, methods:{ get:function (e) { if (e.keyCode == 38 || e.keyCode == 40) { return; } if (e.keyCode == 13) { window.open('https://www.baidu.com/s?wd=' + this.search); this.search = ''; } this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{ params:{ wd: this.search }, jsonp:'cb' }).then(function (res) { // 成功 this.myData = res.data.s; },function (res) { // 错误 console.log(res); }); }, changeDown:function () { this.now ++; if (this.now == this.myData.length) { this.now = -1; } this.search = this.myData[this.now]; }, changeUp:function () { this.now --; if (this.now == -2) { this.now = this.myData.length-1; } this.search = this.myData[this.now]; } } });};
0 0
- Vue 仿百度搜索
- Vue 百度搜索
- 二五、vue仿百度搜索框
- vue 简单仿写百度搜索
- Vue实现百度下拉提示搜索
- Vue之仿百度搜索框
- vue开发:vue实现百度搜索下拉提示功能
- vue-resource 1.2 jsonp用法(实现百度搜索功能)
- 【04】vue.js — 百度搜索数据案例
- 使用Bootrap和Vue实现仿百度搜索功能
- vue vue搜索 vue模糊搜索
- 用vue的jsonp写了个百度搜索的demo
- 百度搜索
- 百度搜索
- 百度搜索
- vue百度下拉框
- vue+百度下拉框
- Vue调用百度地图
- 软件测试管理
- centos7下安装配置javaweb环境
- Spring WebFlow(二)
- 归并排序(二)
- 学习所感 优先级
- Vue 百度搜索
- 算法提高 学霸的迷宫
- Maven的POM.xml详解(一)
- NFS文件共享解决tomcat集群文件上传。
- 关于在windows下启动zkServer.cmd闪退的解决办法
- 归并排序算法-C++
- 大数据之路
- 数组的动态分配
- Spring Boot-创建Spring Boot项目