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 相关文章推荐
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 Vue.js
vue实现滚动鼠标滚轮切换页面
Dec 13 Vue.js
Vue实现小购物车功能
Dec 21 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
Vue如何实现变量表达式选择器
Feb 18 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
解读Vue组件注册方式
May 15 Vue.js
vue项目支付功能代码详解
Feb 18 Vue.js
vue3获取当前路由地址
Feb 18 Vue.js
教你部署vue项目到docker
Apr 05 Vue.js
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 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 开发环境配置(测试开发环境)
2010/04/28 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
Python进程间通信用法实例
2015/06/04 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
python实现点对点聊天程序
2018/07/28 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
Python sorted对list和dict排序
2020/06/09 Python
电脑教师的教学自我评价
2013/11/26 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
为什么RedisCluster设计成16384个槽
2021/09/25 Redis