6: 过滤任务

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

6.1: 添加隐藏任务按钮

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

使用 Svelte,这将是一个非常简单的任务,因为我们无需做太多事情来保持按钮的状态。让我们添加我们的按钮

imports/ui/App.svelte

<script>
    ..
    let hideCompleted = false;
    ..
    const setHideCompleted = value =>  {
        hideCompleted = value;
    }
</script>

<div class="app">
..
    <div class="main">
        <TaskForm />
        <div class="filter">
            <button on:click={() => setHideCompleted(!hideCompleted)}>
                {hideCompleted ? 'Show All' : 'Hide Completed'}
            </button>
        </div>
        ..
    </div>
</div>

6.2: 按钮样式

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

client/main.css

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

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

6.3: 过滤任务

现在,如果用户只想查看待办事项,则可以在 Mini Mongo 查询中的选择器中添加一个过滤器,您需要获取所有未选中 isChecked 为 true 的任务。

imports/ui/App.svelte

<script>
    ..
    const hideCompletedFilter = { isChecked: { $ne: true } };

    $m:tasks = TasksCollection.find(
      hideCompleted ? hideCompletedFilter : {}, { sort: { createdAt: -1 } }
    ).fetch()
    ..
</script>
..

6.4: Meteor Dev Tools 扩展

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

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

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

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

6.5: 待办事项

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

如果没有待办事项,您应该避免在应用栏中添加零。

imports/ui/App.svelte

<script>
    import { TasksCollection } from '../api/TasksCollection';
    ..
    let incompleteCount;
    let pendingTasksTitle = '';
    let tasks = [];

    $m: {
        tasks = TasksCollection.find(hideCompleted ? hideCompletedFilter : {}, { sort: { createdAt: -1 } }).fetch()

        incompleteCount = TasksCollection.find(hideCompletedFilter).count();

        pendingTasksTitle = `${
                incompleteCount ? ` (${incompleteCount})` : ''
        }`;
    }
    ..
</script>

<div class="app">
    <header>
        <div class="app-bar">
            <div class="app-header">
                <h1>📝️ To Do List {pendingTasksTitle}</h1>
            </div>
        </div>
    </header>
    ..
</div>

您的应用程序应如下所示

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

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

在 GitHub 上编辑
// 搜索框