6: 过滤任务

在本步骤中,您将按状态过滤任务并显示待办任务的数量。

6.1: 过滤任务

首先,您将添加一个按钮来显示或隐藏列表中的已完成任务。

我们将学习如何使用 Vue 的组件状态来存储仅在客户端使用的临时信息。

首先,我们需要在 App 组件中添加一个按钮

imports/ui/App.vue

..
<div class="main">
  <TaskForm />
  <div class="filter">
    <button
        v-model="hideCompleted"
        @click="toggleHideCompleted"
    >
      <span v-if="hideCompleted">Show All</span>
      <span v-else>Hide Completed Tasks</span>
    </button>
  </div>
  ..
</div>
..

您可以看到它读取了 this.hideCompleted。我们需要在组件的数据对象中初始化 this.hideCompleted 的值

imports/ui/App.vue

..
},
  data() {
    return {
      hideCompleted: false
    };
  },
  methods: {},
..

我们可以直接从事件处理程序更新 this.hideCompleted,这将导致组件重新渲染

imports/ui/App.vue

..
  },
  methods: {
    toggleHideCompleted() {
      this.hideCompleted = !this.hideCompleted;
    }
  },
  meteor: {
..

6.2: 按钮样式

您应该为按钮添加一些样式,使其看起来不那么灰暗,并且对比度更好。您可以使用以下样式作为参考

client/main.css

.filter {
  display: flex;
  justify-content: center;
}

.filter > button {
  background-color: #62807e;
}

6.3 过滤任务

现在,我们需要更新任务列表,以便在 this.hideCompleted 为 true 时过滤掉已完成的任务:imports/ui/App.vue

..
meteor: {
  tasks() {
    let filteredTasks = TasksCollection.find({}, { sort: { createdAt: -1 } }).fetch();
    
    if (this.hideCompleted) {
      filteredTasks = filteredTasks.filter(task => !task.checked);
    }

    return filteredTasks;
  }
}
..

6.4: Meteor 开发工具扩展

您可以安装扩展程序以可视化 Mini Mongo 中的数据。

Meteor DevTools Evolved 将帮助您调试应用程序,因为您可以看到 Mini Mongo 中有哪些数据。

您还可以看到 Meteor 从服务器发送和接收的所有消息,这对于您了解 Meteor 的工作原理很有用。

使用此 链接 在 Google Chrome 浏览器中安装它。

6.5: 待办任务

更新 App 组件以在应用栏中显示待办任务的数量。

当没有待办任务时,您应该避免在应用栏中添加零。

imports/ui/App.vue

..
    <h1>
      📝️ To Do List
      <span v-if="incompleteCount > 0">({{incompleteCount}})</span>
    </h1>
..
    return filteredTasks;
  },
  incompleteCount() {
    return TasksCollection.find({ checked: { $ne: true } }).count();
  }
..

您可以在同一个 useTracker 中执行这两个查找,然后返回一个包含这两个属性的对象,但为了使代码更容易理解,我们在这里创建了两个不同的跟踪器。

您的应用程序应该如下所示

回顾:您可以在本步骤结束时查看代码应如何编写 此处

在下一步中,我们将向您的应用程序中添加用户访问权限。

在 GitHub 上编辑
// 搜索框