程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何添加 Vue.js 搜索过滤器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何添加 Vue.js 搜索过滤器?

开发过程中遇到如何添加 Vue.js 搜索过滤器的问题如何解决?下面主要结合日常开发的经验,给出你关于如何添加 Vue.js 搜索过滤器的解决方法建议,希望对你解决如何添加 Vue.js 搜索过滤器有所启发或帮助;

我尝试学习 Vue.Js,现在尝试解决对我的数组 savedMembers 的过滤器搜索。但我不能让它工作。

数组名称:savedMembers
数组中的变量,名字,姓氏和电子邮件
搜索字段:搜索

    @H_262_9@如何添加响应式搜索? @H_262_9@如何更新已保存成员的视图? @H_262_9@我想要一个过滤器函数来过滤数组的所有值。但如果我只能按名字过滤也没关系。

这是我的 index.HTML

<HTML lang="en">
<head>
  <Meta charset="UTF-8">
  <Meta http-equiv="X-UA-Compatible" content="IE=edge">
  <Meta name="vIEwport" content="wIDth=device-wIDth,initial-scale=1.0">
  <link rel="stylesheet" type="text/CSS" href="style.CSS">
  <title>Team Page</title>
</head>
<body>
  <div ID="app">
    <team-page></team-page>
  </div>

  <script src="https://cdn.Jsdelivr.net/npm/vue@2/dist/vue.Js"></script>
  <script src="main.Js"></script>
</body>
</HTML>

这是我的 main.Js

  template: `
  <div class="team_members">
    <h3>Team</h3>
    <div class="create_member">
      <form action="" @submit.prevent="onsubmit">
        <label for="firstname">First name</label><br>
        <input type="text" v-model="firstname" name="firstname"><br>
        <label for="lasttname">last name</label><br>
        <input type="text" v-model="lastname" name="lastname"><br>
        <label for="email">Email</label><br>
        <input type="text" v-model="email" name="email"><br>
        <input class="addMemberBtn" type="submit" value="submit">
      </form>
      <p v-if="errors.length">
        <b>Please correct the following error(s):</b>
        <ul>
          <li v-for="error in errors">{{ error }}</li>
        </ul>
      </p>
    </div>
    <div class="teamContainer">
      <h3 class="team_header">Team</h3>
      <div class="team_content">
        <div class="container">
          <div class="searchBox">
            <input class="search" type="text" placeholder="Search" v-model="search">
          </div>
          <div class="createMemberBtn">
            <button>Add New Team Member</button>
          </div>
        </div>
        <div class="vIEw-members">
          <table>
            <tr>
              <th>name</th>
              <th colspan="2">Status</th>
            </tr>
            <tr v-for="member in savedMembers">
              <td>{{ member.firstname }} {{ member.lastname }}</td>
              <td>{{ member.email }}</td>
            </tr>
          </table>
        </div>
      </div>
    </div>
  </div>
  `,data() {
    return {
      search: null,firstname: null,lastname: null,email: null,errors: [],savedMembers: [],};
  },methods: {
    addNewTeAMMember(newTeAMMember) {
      this.savedMembers.push(newTeAMMember);
    },onsubmit() {
      if (this.firstname && this.lastname && this.email) {
        let newTeAMMember = {
          firstname: this.firstname,lastname: this.lastname,email: this.email,};
        this.addNewTeAMMember(newTeAMMember);
        //this.$emit('members-submitted',newTeAMMember)
        this.firstname = null;
        this.lastname = null;
        this.email = null;
      } else {
        if (!this.firstName) this.errors.push("First name required");
        if (!this.lastName) this.errors.push("last name required");
        if (!this.email) this.errors.push("Email required");
      }
    },},computed: {
    /*filteredList() {
      return this.savedMembers.filter((member) => {
        return member.firstname
          .tolowerCase()
          .includes(this.search.tolowerCase());
      });
    },*/
  },});

var app = new Vue({
  el: "#app",data: {},});

解决方法

根据文档的this part:

“计算属性根据它们的反应性依赖项进行缓存。计算属性仅在其某些反应性依赖项发生变化时才会重新评估。”

这意味着,在您的情况下,filteredList 只会在 this.savedMembers 数组发生变化时发生变化。

所以,正确的方法是:

    @H_262_9@创建另一个数组,让我们假设 filteredSavedMembers @H_262_9@您创建一个方法来在 search 发生变化时做出反应(即 <input @change="onSearchChange".../> @H_262_9@在此方法中,您将过滤分配给 filteredSavedMembers @H_262_9@就是这样,现在您只需在模板中显示过滤后的列表。

*Obs: 要按多个值过滤,可以使用 or (||) 运算符,如下所示:

const search = this.search.toLowerCase()
this.filteredSavedMembers = this.savedMembers
  .filter(({ firstName,lastName,email }) =>
    firstName.toLowerCase().includes(search) ||
    lastName.toLowerCase().includes(search) ||
    email.toLowerCase().includes(search)
  )

大佬总结

以上是大佬教程为你收集整理的如何添加 Vue.js 搜索过滤器全部内容,希望文章能够帮你解决如何添加 Vue.js 搜索过滤器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。