主要用到的知识很简单,简单的vuejs2.0的知识就够了。源码用了.vue构建和ES6,用了webpack打包等等。我资历还浅,先用一个简单的.js的写。

先看效果

这里有两个组件,一个组件是logo部分的,一个是搜索框部分的。

html

html很简单,就是引用两个组件。

//js还要实例#app

var app = new Vue({

el: "#app"

})

logo

先来分析,首先一个显示搜索引擎的图片,这里要响应式的,下面选择了不同的搜索引擎图标就要跟着换。所以。后面的倒三角点击时显示下拉列表 。

然后是下拉框。如果想要有过渡效果,那个就要包裹在

想要有hover效果的话,用数据驱动的思维,就是比较index 与hoverindex是否相等,如果相等就加class。

Vue.component('logo-picture',{

template :' \

\

\

\

\

\

\

\

\

',

data: function() {

return {

items: [{src:'../src/assets/360_logo.png'},{src:'../src/assets/baidu_logo.png'},{src:'../src/assets/sougou_logo.png'}],

now: 0,

flagShow: false,

hoverindex: -1

}

},

methods: {

//显示隐藏图片列表

toggleFlag: function() {

this.flagShow = !this.flagShow;

},

//改变搜索引擎

changeFlag: function(index) {

this.now = index;

this.flagShow = false;

bus.$emit("change",index);

},

//li hover

flagHover: function(index) {

this.hoverindex = index;

}

}

});

下拉框

input因为要双向绑定,所以要v-model="keyword",还要绑定键盘事件@keyup,如果按enter就搜索,向下向上就选中给定的返回信息列表。

下面的详情框与下拉列表差不多。

搜索的话主要是运用$http.jsonp,还有ES6的语法?回掉好像是Promise的.then()。

Vue.component('search-panel',{

template:'\

\

\

×\

搜一下\

\

\

\

{{value}}\

\

\

\

',

data: function() {

return {

search: '',

myData: [],

flag: 0,

now: -1,

logoData: [

{

'name': "360搜索",

searchSrc: "https://www.so.com/s?ie=utf-8&shb=1&src=360sou_newhome&q="

},

{

'name': "百度搜索",

searchSrc: "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd="

},

{

'name': "搜狗搜索",

searchSrc: "https://www.sogou.com/web?query="

}

]

}

},

methods: {

get: function(event) {

if(event.keyCode == 38 || event.keyCode == 40){ //向上向下

return ;

}

this.$http.jsonp('https://sug.so.360.cn/suggest?word=' + this.search + '&encodein=utf-8&encodeout=utf-8').then(function(res) {

this.myData = res.data.s;

}, function() {

});

},

//清除内容

clearInput: function() {

this.search = '';

this.get();

},

//搜索

searchInput: function() {

alert(this.flag)

window.open(this.logoData[this.flag].searchSrc+this.search);

},

//搜索的内容

searchThis: function(index) {

this.search = this.myData[index];

this.searchInput();

},

//li hover

selectHover: function(index) {

this.search = this.myData[index];

this.now = index;

},

//向下

selectDown: function() {

this.now++;

if(this.now == this.myData.length) {

this.now = 0;

}

this.search = this.myData[this.now];

},

//向上

selectUp: function() {

this.now--;

if(this.now == -1) {

this.now = this.myData.length - 1;

}

this.search = this.myData[this.now];

}

},

created: function() { //通信

var self = this;

bus.$on('change',function(index) {

self.flag = index;

})

}

})

两个兄弟组件通信的问题

换了搜索引擎的话,要换成相应的搜索引擎。这里要新建一个空的Vue对象做中间,因为两个组件不是父子关系。

var bus = new Vue();

//logo-picture里触发事件,并传递参数

bus.$emit("change",index);

//search-panel里监听事件是否发生

var self = this;

bus.$on('change',function(index) {

self.flag = index;

})

这里要注意this问题,$on里this指向bus,所以要保存this才能引用search-panel.

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多搜索功能实现的精彩文章,请点击专题:javascript搜索功能汇总 进行学习

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

vue实现搜索框搜索新增_基于Vue.js实现简单搜索框相关推荐

  1. vue里面怎么删除部分页面_基于VUE选择上传图片并页面显示(图片可删除)

    基于VUE选择上传图片并在页面显示,图片可删除,具体内容如下 demo例子: 依赖文件: HTML文本内容: 相关照片 JS文本内容: /** * 从 file 域获取 本地图片 url */ fun ...

  2. vue实现卡片式上下滑动_基于Vue.js仿制探探卡片左右滑动特效

    说明 > 最近一直在捣鼓Nuxt.js项目,项目中有个需求是实现类似探探左右滑动切换功能.要求能实现手指拖拽切换.点击按钮进行切换.拖拽回弹等功能. 如上图:最终展示效果 emmm~~ 是不是感 ...

  3. vue实现上下滑动翻页_基于vue实现上下滑动翻页效果

    18年年底的时候,一直在做年度报告的H5页面,因为项目需要,需要实现上下滑动翻页,并且上滑的页面比正常页面的比例要缩小一定比例. 效果类似于http://www.17sucai.com/pins/de ...

  4. vue 微信公众号支付接口_基于vue的h5项目之支付宝支付与微信支付

    本文仅记录基于vue开发h5项目过程中使用支付宝和微信支付过程中的重点与槽点,仅为前端部分,如有疏漏不正之处,请于文末评论探讨.注意:标红部分灰常重要,仔细阅读官方文档非常重要,耐心非常重要,细心非常 ...

  5. vue和Java做数据交互_基于vue和springmvc前后端分离,json类接口调用介绍

    基于vue和springmvc前后端分离,json类接口调用介绍 版本要求:spring-3.2.9.RELEASE.vue-2.9.2.axios-0.17.1,其中axios作为http clie ...

  6. 基于vue的响应式ui框架_基于Vue.js的响应式和可配置UI框架

    基于vue的响应式ui框架 Framevuerk (Framevuerk) Fast, Responsive, Multi Language, Both Direction Support and C ...

  7. vue实现搜索框搜索新增_基于Vue el-autocomplete 实现类似百度搜索框功能_含真_前端开发者...

    效果图如下所示: 首先上代码 让数据触手可及 class="inline-input search-input" v-model="searchContent" ...

  8. vue实现留言板的功能_基于vue和bootstrap实现简单留言板功能

    本文实例为大家分享了vue实现简单留言板功能的具体代码,供大家参考,具体内容如下 作为一个刚开始接触vue的前端小白,我想在这里记录一些学习过程,希望和大家一起进步,如有不妥处之处,请多多指教呦. 今 ...

  9. vue可视化拖拽组件模板_基于 Vue 丝滑般拖拽排序组件VueSlicksort

    今天给大家分享一个功能超强的自由拖拽排序组件VueSlicksort. vue-slicksort 一款功能强大的可拖拽的vue.js组件.拥有丝滑般拖拽动画效果,支持水平/垂直/网格拖拽排序.还可以 ...

最新文章

  1. Python高级爬虫开发,高难度JS解密教程,绝地求生模拟登陆!
  2. 招青年博士,年薪70-80万,200万以上补贴,直聘博导!苏州大学
  3. copy一下面试题目
  4. module 'itertools' has no attribute 'izip'
  5. VTK:PolyData之AttachAttributes
  6. Hadoop 大数据平台架构与实践
  7. Oulipo(POJ-3461)
  8. Hyper-V动态扩展或差异磁盘体积缩小技巧
  9. RK3288开发过程中遇到的问题点和解决方法之Packages
  10. GoldenGate碎碎念
  11. Wi-Fi连接握手包抓包
  12. 计算机桌面最下面的横条怎么去掉,win7系统桌面出现横条如何去除?桌面出现横条去除方法...
  13. idea中html导入背景图片,IDEA设置导入主题样式皮肤,加入背景图片
  14. word文档设置页眉页脚的技巧
  15. 【干货】9个网络故障排除经典案例,网工都得会
  16. 《谁动了我的奶酪》感悟
  17. 数据库中delete和drop的区别
  18. android 音乐播放器关于歌词的处理
  19. C语言中的引用,以及传递引用,数组传递
  20. Parasoft全面发布最广泛的MISRA规则覆盖

热门文章

  1. Java-009-数组和日期时间类(Date,Calendar)详解
  2. 【Java】花费数十小时,带你体验Java文档搜索引擎的实现过程
  3. 苹果与华为领衔 全球科技巨头进军AI手机领域
  4. 如何用计算机设计衣服,怎样才能成为出色的服装设计师_电脑服装设计图怎么画...
  5. Wenli Zou's homepage
  6. 代码随想录训练营day7
  7. Linux强制使用短密码|修改短密码|passwd无效的密码
  8. android中帧布局效果,Android开发实现布局帧布局霓虹灯效果示例
  9. ai前世识别_ai人脸识别前世今生app
  10. 函数:GetDistance,计算两个经度纬度之间距离