返回介绍

入门指南 - 添加移除所有已完成待办事项的按钮

发布于 2020-02-21 15:48:01 字数 2397 浏览 958 评论 0 收藏 0

英文原文:http://emberjs.com/guides/getting-started/display-a-button-to-remove-completed-todos/

TodoMVC允许用户通过点击一个按钮来删除所有已完成的待办事项。这个按钮只在存在已完成的待办事项的时候才显示,并显示已完成的数量。当点击该按钮时,所有已完成的待办事项将被删除。

在此,我们来实现这个功能。在index.html中,修改静态的<button>以便清除所有已完成的待办事项:

1
2
3
4
5
6
7
{{! ... 为保持代码简洁,在此省略了其他代码 ... }}
{{#if hasCompleted}}
  <button id="clear-completed" {{action "clearCompleted"}}>
    Clear completed ({{completed}})
  </button>
{{/if}}
{{! ... 为保持代码简洁,在此省略了其他代码 ... }}

js/controllers/todos_controller.js中实现匹配属性和一个在按钮点击时被调用的方法。该方法实现删除已完成待办事项和将这些改变持久化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// ... 为保持代码简洁,在此省略了其他代码 ...
actions: {
  clearCompleted: function() {
    var completed = this.filterBy('isCompleted', true);
    completed.invoke('deleteRecord');
    completed.invoke('save');
  },
// ... 为保持代码简洁,在此省略了其他代码 ...
},
hasCompleted: function() {
  return this.get('completed') > 0;
}.property('completed'),

completed: function() {
  return this.filterBy('isCompleted', true).get('length');
}.property('@each.isCompleted'),
// ... 为保持代码简洁,在此省略了其他代码 ...

completedclearCompleted 方法都调用 filterBy 方法,它是ArrayController API的一部分,并且返回一个EmberArray的实例,该实例包含回调返回为真的条目。clearCompleted 方法同样调用 invoke 方法,该方法是EmberArray API的一部分。invoke 将会在数组中的每个对象上执行一个方法,如果这个对象上存在方法的话。

重载浏览器确保没有任何错误,并且上面描述的功能正常。

在线演示

Ember.js • TodoMVC

附加资源

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文