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 的 v-model用法实例
Nov 23 Vue.js
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
vue下拉刷新组件的开发及slot的使用详解
Dec 23 Vue.js
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
Vue全家桶入门基础教程
May 14 Vue.js
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue如何清除浏览器历史栈
May 25 Vue.js
vue router 动态路由清除方式
May 25 Vue.js
vue实现input输入模糊查询的三种方式
Aug 14 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
php简单定时执行任务的实现方法
2015/02/23 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
js可突破windows弹退效果代码
2008/08/09 Javascript
小型js框架veryide.librar源代码
2009/03/05 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
python ElementTree 基本读操作示例
2009/04/09 Python
神经网络python源码分享
2017/12/15 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
文化宣传方案
2014/03/13 职场文书
低碳环保口号
2014/06/12 职场文书
民事调解书范文
2015/05/20 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书