Vue仿百度搜索功能


Posted in Vue.js onDecember 28, 2020

简述

学习vue的第二节,由于2.0版本并不向下兼容,视频中的不少内不能实现。下面列出一些主要知识点

// v-on 可简写为@
// 事件冒泡是指当点击div内部的button触发show1()时,必然会冒泡到div上执行show2(),这才层级div中很常见
// 阻止冒泡,原生js法,设置事件对象的cancelBubble属性为true
// vue方法@click.stop

// 阻止默认行为,原生js法,设置事件对象的preventDefault属性为true
// vue方法@contextmenu.prevent

// 键盘事件获取键码,原生js法,使用事件对象的keyCode属性
// vue方法@keyup.键码或键名,如获取按下回车@keydown.13 或 @keydown.enter

// 绑定属性v-bind:src,简写 :src 只绑定一次使用v-once,将绑定内容转义成html使用v-html

基本知识:

vue

$http.jsonp().then()
:class
@keyup
@keydown

配置库文件

<script src="lib\vue.js"></script>
<!-- vue本身不支持数据交互,必须引入vue-resource.js,现在vue官方也推荐axios.js-->
<script src="lib\vue-resource.js"></script>

Script

<script>
    window.onload = function() {
      new Vue({
        el: '#box',
        data: {
          myData: [],
          content: '',
          now: -1,
        },
        methods: {
          get: function(ev) {
            // 这里的键码只能通过事件对象$event传进来,因为输入大多数键都应该可以进行搜素,我们要排除的就是up(38)和down(40)
            if (ev.keyCode == 38 || ev.keyCode == 40) {
              return;
            }
            // 这里当按下的键是Enter时,应实现搜索跳转功能
            if(ev.keyCode == 13) {
              window.open('https://www.baidu.com/s?wd=' + this.content);
              this.content = '';
            }
            this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=' + this.content, {
              jsonp: 'cb'
            }).then(function(res) {
              this.myData = res.data.s;
            }, function() {
              alert("搜索失败");
            })
          },
          changeDown: function() {
            this.now++;
            if(this.now == this.myData.length) {
              this.now = -1;
            }
            // 这里实现输入框中也显示同样的内容
            this.content = this.myData[this.now];
          },
          changeUp: function() {
            this.now--;
            if (this.now == -2) {
              this.now = this.myData.length;
            }
            this.content = this.myData[this.now];
          }
        },
      })
    }
</script>

三个方法:get()用于对百度进行数据交互;cheangeDown()用于实现选中区域下移;changeUp()用于实现选中区域上移

HTML

<body>
  <div id="box">
    <input type="text" name="" id="" v-model="content" @keyup="get($event)" @keydown.down="changeDown()" @keydown.up="changeUp()">
    <ul>
      <!-- 这里注意给class添加属性的时候采用的是{属性:true/false}的形式 -->
      <li v-for="(item, index) in myData" :class="{grey: index==now}">
        {{item}}
      </li>
    </ul>
    <p v-show="myData.length == 0">暂无数据...</p>
  </div>
</body>

效果

Vue仿百度搜索功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
vue实现登录功能
Dec 31 Vue.js
Vue看了就会的8个小技巧
Jan 21 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
vue 实现click同时传入事件对象和自定义参数
Jan 29 Vue.js
Vue+TypeScript中处理computed方式
Apr 02 Vue.js
vue中watch的用法汇总
Dec 28 #Vue.js
浅析vue中的nextTick
Dec 28 #Vue.js
Vue实现省市区三级联动
Dec 27 #Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 #Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 #Vue.js
在vue项目中封装echarts的步骤
Dec 25 #Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 #Vue.js
You might like
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
jquery 双色表格实现代码
2009/12/08 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
js+css实现打字效果
2020/06/24 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python requests指定出口ip的例子
2019/07/25 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
python实现在线翻译功能
2020/03/03 Python
python 实现图片批量压缩的示例
2020/12/18 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
世界上最好的帽子:Tilley
2016/11/27 全球购物
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
数组越界问题
2015/10/21 面试题
《孔子拜师》教学反思
2014/02/24 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
党支部培养考察意见
2015/06/02 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL
python全面解析接口返回数据
2022/02/12 Python
Python使用永中文档转换服务
2022/05/06 Python
python数字图像处理实现图像的形变与缩放
2022/06/28 Python