123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <template>
- <div class="todo-footer" v-show="total">
- <label>
- <!-- <input type="checkbox" :checked="isAll" @change="checkAll"/> -->
- <input type="checkbox" v-model="isAll"/>
- </label>
- <span> <span>已完成{{doneTotal}}</span> / 全部{{ total }} </span>
- <button class="btn btn-danger" @click="clearAll">清除已完成任务</button>
- </div>
- </template>
- <script>
- export default {
- name: "MyFooter",
- props: ['todos'],
- computed:{
- //任务总数
- total(){
- return this.todos.length
- },
- //已完成任务数
- doneTotal(){
- // const x = this.todos.reduce((pre,current)=>{
- // console.log('@@',pre)
- // return pre + (current.done ? 1 : 0)
- // },0)
- // console.log('###',x)
- // 代码简化
- return this.todos.reduce((pre,todo)=>pre + (todo.done ? 1 : 0),0)
- },
- // reduce里面的函数会调用三次,第一次调用的时候,pre的初始值是reduce的第二个参数(本例中为0)
- //从第二次开始,pre的值都是上一次调用函数的返回值
- //current是每一个元素对象
- // isAll(){
- // return this.doneTotal === this.total && this.total > 0
- // }
- //是否全选
- isAll:{
- get(){
- return this.doneTotal === this.total && this.total > 0
- },
- set(value){
- // this.checkAllTodo(value)
- this.$emit('checkAllTodo',value)
- }
- }
- },
- methods:{
- // checkAll(e){
- // // console.log(e.target.checked)
- // this.checkAllTodo(e.target.checked)
- // },
-
- //清除已完成的任务
- clearAll(){
- this.$emit('cleatAllTodo')
- }
- }
- };
- </script>
- <style scoped>
- /*footer*/
- .todo-footer {
- height: 40px;
- line-height: 40px;
- padding-left: 6px;
- margin-top: 5px;
- }
- .todo-footer label {
- display: inline-block;
- margin-right: 20px;
- cursor: pointer;
- }
- .todo-footer label input {
- position: relative;
- top: -1px;
- vertical-align: middle;
- margin-right: 5px;
- }
- .todo-footer button {
- float: right;
- margin-top: 5px;
- }
- </style>
|