1

我指的是这个例子

http://emberjs.com/examples/todos/

在代码中,他们通过过滤然后从集合中删除来清除列表

clearCompletedTodos: function() {
    this.filterProperty('isDone', true).forEach(this.removeObject, this);
  },

假设我希望应用相同的过滤器,但我想切换而不是删除。换句话说,某种类型的“隐藏完成”按钮。如果选中,它将隐藏所有已完成的任务。如果未选中,它将显示所有已完成的任务。我该怎么做?

4

1 回答 1

4

您可以沿着这条线创建一些东西,请参阅http://jsfiddle.net/pangratz666/rufjC/

车把

{{#each todos}}
    {{#view App.TodoView todoBinding="this" }}
        {{view Ember.Checkbox valueBinding="todo.isDone" titleBinding="todo.label" }}
    {{/view}}
{{/each}}

JavaScript

App.TodoView = Ember.View.extend({
    hideTodosBinding: 'App.hideTodos',
    isDoneBinding: 'todo.isDone',
    isVisible: function(){
        return !(this.get('hideTodos') && this.get('isDone'));
    }.property('hideTodos', 'isDone').cacheable()
});
于 2012-04-18T08:48:55.230 回答