vue实现搜索过滤效果


Posted in Javascript onMay 28, 2019

本文实例为大家分享了vue实现搜索过滤效果的具体代码,供大家参考,具体内容如下

html:

<table id="tfhover_1" class="tftable_1" border="1">
  <tr>
    <th>名称</th>
    <th>链接状态</th>
    <th>IP</th>
    <th>特例类型</th>
    <th>所属城市</th>
    <th>所属机房</th>
  </tr>
  <tr v-cloak v-for="(item, index) of slist">
    <td>{{item.name}}</td>
    <td>{{item.username}}</td>
    <td>{{item.email}}</td>
    <td>{{item.sex}}</td>
    <td>{{item.province}}</td>
    <td>{{item.hobb}}</td>
    <!--<td><a href="javascript:;" rel="external nofollow" rel="external nofollow" @click="showOverlay(index)">修改</a> | <a href="javascript:;" rel="external nofollow" rel="external nofollow" @click="del(index)">删除</a></td>-->
  </tr>
</table>

css:

[v-cloak] {
  display: none
}
table {
  border: 1px solid #ccc;
  padding: 0;
  border-collapse: collapse;
  table-layout: fixed;
  /*margin-top: 10px;*/
  width: 100%;
  margin-top: 45px;
}
table td,
table th {
  height: 30px;
  border: 1px solid #ccc;
  background: #fff;
  font-size: 2vh;
  padding: 12px 3px 6px 8px;
  color: #666666;
  font-weight: 300;
}
table th:first-child {
  width: 4rem;
}
.container,
.st {
  /*width: 1000px;*/
  margin: 10px auto 0;
  font-size: 13px;
  font-family: '微软雅黑'
}
.container .search {
  font-size: 15px;
  padding: 4px;
}
.container .add {
  padding: 5px 15px;
}
.overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 6;
  background: rgba(0, 0, 0, 0.7);
}
.overlay td:first-child {
  width: 8rem;
}
.overlay .con {
  position: absolute;
  /*width: 420px;*/
  min-height: 300px;
  background: #fff;
  left: 50%;
  top: 50%;
  -webkit-transform: translate3d(-50%, -50%, 0);
  transform: translate3d(-50%, -50%, 0);
  /*margin-top: -150px;*/
  padding: 20px;
}
 
.span_1{
  font-size: 18px;
  color: #666666;
}

js:

Vue.component('model', {
 
  template: '',
  props: ['list', 'isactive'],
  computed: {
    modifylist() {
      return this.list;
    }
  },
  methods: {
    changeActive() {
      this.$emit('change');
    },
    modify() {
      this.$emit('modify', this.modifylist);
    },
    add(){
 
    }
  }
});
 
 
var app = new Vue({
  el: '#app',
  data: {
    isActive: false,
    selected: -1,
    selectedlist: {},
    slist: [],
    searchlist: [],
    list: [
      {
        name:'Fe1',
        username: '开',
        email: '221.122.62.221',
        sex: '特例1',
        province: '北京',
        hobb:'电子机房'
      },
      {
        name:'Fe2',
        username: '关',
        email: '192.168.12.222',
        sex: '特例2',
        province: '上海',
        hobb: '服务机房'
      },
      {
        name:'Fe3',
        username: '开',
        email: '127.255.255.255',
        sex: '特例3',
        province: '重庆',
        hobb: '遥控机房'
      },
      {
        name:'Fe4',
        username: '关',
        email: '223.255.255.255',
        sex: '特例4',
        province: '北京市',
        hobb:'内网机房'
      }
    ]
  },
  created() {
    this.setSlist(this.list);
  },
  methods: {
    // 修改数据
    showOverlay(index) {
      this.selected = index;
      this.selectedlist = this.list[index];
      this.changeOverlay();
    },
    // 点击保存按钮
    modify(arr) {
      if (this.selected > -1) {
        Vue.set(this.list, this.selected, arr);
        this.selected = -1;
      } else {
        this.list.push(arr);
      }
      this.setSlist(this.list);
 
      this.changeOverlay();
    },
 
    del(index) {
      this.list.splice(index, 1);
      this.setSlist(this.list);
    },
    changeOverlay() {
      this.isActive = !this.isActive;
    },
    // 获取需要渲染到页面中的数据
    setSlist(arr) {
      this.slist = JSON.parse(JSON.stringify(arr));
    },
    // 搜索
    search() {
      var v = $('.search').val(),
        self = this;
      self.searchlist = [];
      if (v) {
        var ss = [];
        // 过滤需要的数据
        this.list.forEach(function (item) {
          if (item.province.indexOf(v) > -1) {
            if (self.searchlist.indexOf(item.province) == -1) {
              self.searchlist.push(item.province);
            }
            ss.push(item);
          } else if (item.hobb.indexOf(v) > -1) {
            if (self.searchlist.indexOf(item.hobb) == -1) {
              self.searchlist.push(item.hobb);
            }
            ss.push(item);
          }
        });
        this.setSlist(ss); // 将过滤后的数据给了slist
      } else {
        // 没有搜索内容,则展示全部数据
        this.setSlist(this.list);
      }
    }
  },
  watch: {
  }
})

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

Javascript 相关文章推荐
javascript 伪数组实现方法
Oct 11 Javascript
探讨JavaScript中声明全局变量三种方式的异同
Dec 03 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
轻松理解Javascript变量的相关问题
Jan 20 Javascript
原生和jQuery的ajax用法详解
Jan 23 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 jQuery
JS实现动态无缝轮播
Jan 11 Javascript
ElementUI中el-tree节点的操作的实现
Feb 27 Javascript
用js编写留言板
Mar 17 Javascript
uniapp开发小程序的经验总结
Apr 08 Javascript
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
微信小程序 image组件遇到的问题
May 28 #Javascript
vue实现搜索功能
May 28 #Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
May 28 #Javascript
如何实现双向绑定mvvm的原理实现
May 28 #Javascript
vue实现带复选框的树形菜单
May 27 #Javascript
vue实现按需加载组件及异步组件功能
May 27 #Javascript
Vue实现导航栏点击当前标签变色功能
Aug 19 #Javascript
You might like
网友原创的PHP模板类代码
2008/09/07 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
AngularJs Forms详解及简单示例
2016/09/01 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
求职简历中自我评价
2014/01/28 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
mysql 索引合并的使用
2021/08/30 MySQL
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
python 判断文件或文件夹是否存在
2022/03/18 Python
讲解Python实例练习逆序输出字符串
2022/05/06 Python
Python数组变形的几种实现方法
2022/05/30 Python