vue案例---数据筛选

本文通过一个案例展示了如何在Vue应用中实现数据筛选功能。利用indexOf方法,根据输入框的字符匹配并显示相关内容,实现类似搜索历史的效果。文章详细解释了indexOf的用法,并提供了完整的代码实现,包括如何绑定输入框内容、使用computed属性进行动态计算和过滤数据。
摘要由CSDN通过智能技术生成

本次案例是要完成在输入框输入字符,下面显示相关内容,相当于搜索历史的功能

本次案例我们用到indexOf用法

在vue中,indexof()可用来返回某个指定的字符串值在字符串中首次出现的位置,也可利用返回值判断指定字符串是否存在,语法“stringObject.indexOf(searchvalue,fromindex)”。

indexOf方法说明:

该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。

注意:1.indexOf() 方法对大小写敏感!

           2.如果要检索的字符串值没有出现,则该方法返回 -1。

接下来我们来开始编写代码

首先我们需要绑定输入框里的内容,并且遍历数据代码如下:

<!-- 视图层 -->
<template>
  <div id="app">
    <h2>数据筛选</h2>
    <input type="text" v-model="personName" />
    <ul>
      <li v-for="item in personArr">{{item}}</li>
    </ul>
  </div>
</template>

<!-- 逻辑层 -->
<script>
export default {
  name: "",
  data() {
    return {
      personName: "",
      personArr: [
        "喜羊羊",
        "美羊羊",
        "懒羊羊",
        "沸羊羊",
        "暖羊羊",
        "熊大",
        "熊二",
        "光头强",
        "猪猪侠",
        "小猪佩奇",
        "小猪乔治",
      ],
    };
  },
  components: {},
};
</script>

<!-- 样式层 -->
<style lang="" scoped>
</style>

 然后应该怎么做呢?

这里用到computed方法

computed:是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有
它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed
的值;

computed运用场景:当我们需要进行数值计算,并且依赖于其它数据时,应该使用 computed,因为可以利用 computed 的缓存特性,避免每次获取值时,都要重新计算;

主要步骤:在computed中定义一个list方法,在list方法中定义一个空数组,定义一个变量拿到输入框中的值,并且用到forEach遍历我们在data中的定义的数组的值,然后用到indexOf方法去筛选里的值,如果返回值是-1,就代表没有这个值,然后返回遍历后的数组,最后遍历数组的值

完整代码如下:

<!-- 视图层 -->
<template>
  <div id="app">
    <h2>数据筛选</h2>
    <input type="text" v-model="personName" />
    <ul>
      <li v-for="item in list">{{ item }}</li>
    </ul>
  </div>
</template>

<!-- 逻辑层 -->
<script>
export default {
  name: "",
  data() {
    return {
      personName: "",
      personArr: [
        "喜羊羊",
        "美羊羊",
        "懒羊羊",
        "沸羊羊",
        "暖羊羊",
        "熊大",
        "熊二",
        "光头强",
        "猪猪侠",
        "小猪佩奇",
        "小猪乔治",
      ],
    };
  },
  components: {},
  // computed方法
  computed: {
    // 定义一个方法
    list() {
      // 定义一个空数组
      let res = [];
      // 定义newname拿到输入框里的变量值
      let newname = this.personName;
      this.personArr.forEach(function (item) {
        if (item.indexOf(newname) != -1) {
          res.push(item);
        }
      });
      return res;
    },
  },
};
</script>

<!-- 样式层 -->
<style lang="" scoped>
</style>

效果如下:

 这样的效果就完成了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用vue-video-player是将video.js集成到了Vue中,因此在考虑到Vue项目的技术融合性方面比较好。而video.js本身的包比较大,使用起来不够灵活,修改UI时需要通过插件实现。另外,还有其他的播放器选择,如clappr和flv.js,但vue-video-player在技术融合和功能方面更具优势。在组件中使用vue-video-player,需要引入相应的CSS文件和引入videoPlayer组件,并在components中注册该组件。这样就可以在组件中使用vue-video-player来实现视频播放的功能。 关于数据流的问题,需要根据具体的场景来确定。在vue-video-player中,可以通过props属性将父组件中的数据传递给子组件,实现数据的流动。同时,子组件也可以通过事件来将数据传递给父组件,实现双向的数据流动。具体的数据流方案需要根据具体的需求来确定,可以根据Vue的官方文档和vue-video-player的文档来了解更多的使用方法和示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue使用vue-video-player实现视频播放:](https://blog.csdn.net/weixin_53791978/article/details/127757827)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [vue2.0使用vue-video-player实现直播](https://blog.csdn.net/weixin_44700978/article/details/118887327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值