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 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
Vue实现随机验证码功能
Dec 29 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
深入理解Vue的数据响应式
May 15 Vue.js
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
Vue中Object.assign清空数据报错的解决方案
Mar 03 Vue.js
vue整合百度地图显示指定地点信息
Apr 06 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
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
我常用的几个类
2006/10/09 PHP
PHP的博客ping服务代码
2012/02/04 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
动态调用CSS文件的JS代码
2010/07/29 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
keras多显卡训练方式
2020/06/10 Python
Python排序函数的使用方法详解
2020/12/11 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
新电JAVA笔试题目
2014/08/31 面试题
易程科技软件测试笔试
2013/03/24 面试题
北京离婚协议书范文2014
2014/09/29 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
英文辞职信范文
2015/05/13 职场文书
工作感言一句话
2015/08/01 职场文书
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫