基于Vue组件实现TodoList(1),2024年最新asp应用

import UserItem from “./UserItem.vue”;

export default {

name: “UserList”,

components: { UserItem },

props: [“todos”, “checktodo”, “deletetodo”],

};

UserItem组件

<label>
  <input
    type="checkbox"
    :checked="todo.done"
  />
  <span>{{ todo.title }}</span>
</label>
<button class="btn btn-danger"">删除</button>

export default {

name: “UserItem”,

props: [“todo”]

};

💗 功能二: 在输入框中输入内容后按enter键,即可把内容添加到下面的列表中(如果内容为空则不添加)


在UserHeader.vue组件里面为表单绑定一个回车事件,配置一个add事件,添加一个任务

<input

type=“text”

placeholder=“请输入你的任务名称,按回车键确认”

@keyup.enter=“add”

v-model=“title”

/>

如何通知App组件去添加一个todo对象 也就是将包装好的todoObj对象传递给App组件?

利用props配置可以实现父组件给子组件传值的操作,此功能需求得实现子组件传值给父组件的操作

因为添加任务的是由UserHeader组件添加数据到UserList组件,而两者的关系是兄弟关系,只有借助它们共同的父组件进行间接传值的操作

思路:父组件提前给子组件传递一个函数,子组件将需要传递给父组件的值通过参数的形式传递

App组件提前给子组件传递一个函数addtodo

methods: {

//添加一个todoObj
addtodo(todoObj) {
  //往data里面添加数据,data数据改变了,重新解析模版
  this.todos.unshift(todoObj);
},

UserHeader子组件:

随机生成一个唯一的id

安装:  npm i nanoid

导入:import {nanoid} from ‘nanoid’

使用:id: nanoid()

props: [“addtodo”],

methods: {

add() {
  //校验数据
  if (!this.title.trim()) {
    alert("数据不能为空");
  }
  //添加一个信息 也可以直接用e.target.value拿到这个输入的值
  // 将用户的输入包装成一个todoObj对象
  const todoObj = { id: nanoid(), title: this.title, done: false };
  //通知App组件去添加一个todo对象 也就是将包装好的todoObj对象传递给App组件
  this.addtodo(todoObj);
  //清空输入
  this.title = " ";
},

},

💗 功能三: 动态计算有几个已完成的任务以及所有的任务


此时需要在UserFooter组件中通过计算属性计算得出已完成的任务

computed: {

doneTotal() {

return this.todos.reduce((pre, todo) => pre + (todo.done ? 1 : 0), 0);

},

},

arry.reduce()方法:

reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。

返回值分配给累计器,该返回值在数组的每个迭代中被记住,并最后成为最终的单个结果值


第一个参数:累计器累计回调的返回值; 它是上一次调用回调时返回的累积值

第二个参数:数组中正在处理的元素。

计算所有的任务

方法一:最简单的方法

todos.length

第二种:计算得出

total() {

return this.todos.length;

},

💗 功能四、点击复选框,实现选中或不选中效果(即完成或未完成)双向绑定


借助UserList 组件实现UserItem和App组件之间互相传值

UserItem组件:

UserFooter组件:

isAll: {

get() {

//返回的是布尔值

return this.doneTotal === this.total && this.total > 0;

},

set(value) {

this.checkAlltodo(value);

},

},

App 组件:

methods: {

//勾选或者取消勾选一个todo

checktodo(id) {

this.todos.forEach((todo) => {

if (todo.id === id) {

todo.done = !todo.done;

}

});

},

//全选或不全选todoObj

checkAlltodo(done) {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数同学面临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。

因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
img
img
img

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
img

学四年学习的一个总结,更是展示自己能力的重要机会。**

因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
[外链图片转存中…(img-Y15gOMDj-1712570436578)]
[外链图片转存中…(img-4dxSO1W6-1712570436579)]
[外链图片转存中…(img-2gNJOlU0-1712570436579)]

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
[外链图片转存中…(img-9VK5o5fC-1712570436579)]

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值