parent
							
								
									435cefc3df
								
							
						
					
					
						commit
						7cdb221faf
					
				
				 5 changed files with 109 additions and 44 deletions
			
			
		@ -1,42 +1,74 @@ | 
				
			||||
<template> | 
				
			||||
  <div class="todo-bottom"> | 
				
			||||
  <div class="todo-bottom" v-show="total"> | 
				
			||||
    <label> | 
				
			||||
      <input type="checkbox"> | 
				
			||||
      <input type="checkbox" v-model="isAll"> | 
				
			||||
    </label> | 
				
			||||
    <span> | 
				
			||||
      <span>已完成0</span>/全部2 | 
				
			||||
      <span>已完成{{ totalDone }}</span>/全部{{ total }} | 
				
			||||
    </span> | 
				
			||||
    <button class="btn btn-danger">清除已完成任务</button> | 
				
			||||
    <button class="btn btn-danger" @click="clearAll">清除已完成任务</button> | 
				
			||||
  </div> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
export default { | 
				
			||||
  name: "TodoBottom" | 
				
			||||
  name: "TodoBottom", | 
				
			||||
  props: ['todos', 'checkAllTodo', 'clearAllTodo'], | 
				
			||||
  computed: { | 
				
			||||
    // 用于计算全部todo任务的总数量,并且通过v-show绑定到模板,用于控制模板的展示 | 
				
			||||
    total() { | 
				
			||||
      return this.todos.length | 
				
			||||
    }, | 
				
			||||
    // 用于统计全部已完成的todo任务数量 | 
				
			||||
    totalDone() { | 
				
			||||
      return this.todos.reduce((pre, todo) => pre + (todo.done ? 1 : 0), 0) | 
				
			||||
    }, | 
				
			||||
    // 计算方法的完整写法 | 
				
			||||
    // get方法用于判断是否全部任务被勾选, 返回布尔值 | 
				
			||||
    // set方法是封装了App中checkAllTodo方法用于勾选和取消勾选全部任务 | 
				
			||||
    isAll: { | 
				
			||||
      get() { | 
				
			||||
        return this.totalDone === this.total && this.total > 0 | 
				
			||||
      }, | 
				
			||||
      set(value) { | 
				
			||||
        this.checkAllTodo(value) | 
				
			||||
      } | 
				
			||||
    } | 
				
			||||
  }, | 
				
			||||
  methods: { | 
				
			||||
    // 封装App中的clearAllTodo方法,用于清除全部已完成数据 | 
				
			||||
    clearAll() { | 
				
			||||
      if (confirm("确认清除全部已完成任务?")) { | 
				
			||||
        this.clearAllTodo() | 
				
			||||
      } | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style scoped> | 
				
			||||
  .todo-bottom{ | 
				
			||||
    height: 40px; | 
				
			||||
    line-height: 40px; | 
				
			||||
    padding-left: 6px; | 
				
			||||
    margin-top: 5px; | 
				
			||||
  } | 
				
			||||
.todo-bottom { | 
				
			||||
  height: 40px; | 
				
			||||
  line-height: 40px; | 
				
			||||
  padding-left: 6px; | 
				
			||||
  margin-top: 5px; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
  .todo-bottom label{ | 
				
			||||
    display: inline-block; | 
				
			||||
    margin-right: 20px; | 
				
			||||
    cursor: pointer; | 
				
			||||
  } | 
				
			||||
  .todo-bottom label input { | 
				
			||||
    position: relative; | 
				
			||||
    top: -1px; | 
				
			||||
    vertical-align: middle; | 
				
			||||
    margin-right: 5px; | 
				
			||||
  } | 
				
			||||
  .todo-bottom button { | 
				
			||||
    float: right; | 
				
			||||
    margin-top: 5px; | 
				
			||||
  } | 
				
			||||
.todo-bottom label { | 
				
			||||
  display: inline-block; | 
				
			||||
  margin-right: 20px; | 
				
			||||
  cursor: pointer; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.todo-bottom label input { | 
				
			||||
  position: relative; | 
				
			||||
  top: -1px; | 
				
			||||
  vertical-align: middle; | 
				
			||||
  margin-right: 5px; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.todo-bottom button { | 
				
			||||
  float: right; | 
				
			||||
  margin-top: 5px; | 
				
			||||
} | 
				
			||||
</style> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue