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 router传递参数并解决刷新页面参数丢失问题
Dec 02 Vue.js
Vue实现简易购物车页面
Dec 30 Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
vuex的使用步骤
Jan 06 Vue.js
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
Vue ​v-model相关知识总结
Jan 28 Vue.js
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 Vue.js
vue引入Excel表格插件的方法
Apr 28 Vue.js
SSM VUE Axios详解
Oct 05 Vue.js
vue实现滑动解锁功能
Mar 03 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 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
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python中pass语句用法实例分析
2015/04/30 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
pip install命令安装扩展库整理
2021/03/02 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
高中军训感言200字
2014/02/23 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
小学感恩主题班会
2015/08/12 职场文书
中学生运动会广播稿
2015/08/19 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
go语言中fallthrough的用法说明
2021/05/06 Golang
javascript的var与let,const之间的区别详解
2022/02/18 Javascript
Python中with上下文管理协议的作用及用法
2022/03/18 Python