话不多说上代码

  • vue>src>App.vue
<template>
<div id="app">
<!-- header -->
<Header/>
<AddTodo v-on:handleAdd="handleAdd"/>
<Todos :todos="todos" @handleDelete="handleDelete"/> </div> </template> <script>
import Todos from "./components/Todos";
import Header from "./components/layout/Header";
import AddTodo from "./components/layout/AddTodo";
export default { name:"app",
data(){
return{
msg:"hello",
todos:[
{
id:,
title:"代办事项1",
completed:false
},
{
id:,
title:"代办事项2",
completed:false
},
{
id:,
title:"代办事项3",
completed:false
},
]
}
},
components:{
Todos,
Header,
AddTodo,
},
methods:{
handleDelete(id){
// console.log(id);
this.todos=this.todos.filter(todo =>todo.id !==id)
},
handleAdd(newTodo){
// this.todos.unshift(newTodo);
this.todos=[...this.todos,newTodo]
}
}
}
</script> <style>
*{
box-sizing:border-box;
margin: ;
padding: ;
} body{
font-family: Arial, Helvetica, sans-serif;
line-height: 1.4;
}
</style>

vue>src>commponents>Todoo.vue

<template>
<div>
<div :key="todo.index" v-for="(todo) in todos">
<!-- <Todoitem :todo="todo" @deleteItem="deleteItem"/> -->
<Todoitem :todo="todo" @deleteItem="$emit('handleDelete',todo.id)"/>
</div>
</div>
</template> <script>
import Todoitem from './Todoitem';
export default {
name:"Todos",
props:{
todos:{
type:Array
}
},
components:{
Todoitem
},
methods:{
// deleteItem(id){
// console.log(id);
// }
}
};
</script> <style scoped> </style>
  • vue>src>commponents>Todooitem.vue
<template>
<div class="todo-item" :class="{'is-complete':todo.completed}">
<p>
<input type="checkbox" @change="markComplete">
{{todo.title}}
<button class="del" @click="$emit('deleteItem',todo.id)">x</button>
</p>
</div>
</template> <script>
export default {
name:"Todos",
props:["todo"],
methods:{
markComplete(){
// console.log(this.todo);
this.todo.completed = !this.todo.completed;
}
} }
</script> <style scoped>
.todo-item{
background: #f4f4f4;
padding: 10px;
border-bottom: 1px #ccc dotted; }
.is-complete{
text-decoration: line-through;
}
.del{
background: #ff0000;
color: #fff;
border: none;
padding: 5px 9px;
border-radius: %;
cursor: pointer;
float: right;
} </style>
  • vue>src>commponents>AddTodo.vue
<template>
<div>
<form @submit="addTodo">
<input v-model="title" type="text" name="title" placeholder="请添加代办事项……"/>
<input type="submit" value="添加" class="btn">
</form>
</div>
</template> <script>
import uuid from "uuid";
export default {
name:"AddTodo",
data(){
return{
title:""
}
},
methods:{
addTodo(e){
e.preventDefault();
// console.log('title:', this.title)
const newTodo={
id:uuid.v4(),
title:this.title,
completed:false
};
console.log('tag',newTodo )
//注册事件
this.$emit("handleAdd",newTodo)
this.title="";
}
}
}
</script>
<style scoped>
form{
display:flex;
}
input[type="text"]{
flex:;
padding: 5px;
}
input[type="submint"]{
flex: ;
}
.btn{
display: inline-block;
border: none;
background: #;
color:#fff;
padding:7px 20px;
cursor: pointer;
}
.btn:hover{
background: #;
}
</style>
  • vue>src>commponents>Header.vue
<template>
<header class="header">
<h1>代办事项</h1>
</header>
</template> <script>
export default {
name: 'Header', }
</script> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.header{
background: #;
color:#fff;
text-align: center;
padding:;
}
</style>

运行效果

一入前端深似海

最新文章

  1. Apache服务器安装过程及问题的解决(for windows system32bit)
  2. Direct2D教程(外篇)环境配置
  3. jquery的ready方法(DOM是否加载完)详解与使用
  4. jQuery jsonp无法捕获404、500状态错误
  5. 熟悉熟悉常用的几个算法用JS的实现
  6. freemarker判断对象是否为空
  7. hdu3247Resource Archiver(ac自动机+spfa)
  8. 用Leangoo做敏捷需求管理-敏捷团队协作
  9. iOS 7.0获取iphone UDID 【转】
  10. Java基础知识强化51:经典排序之桶排序(BucketSort)
  11. phantomjs form提交
  12. [Backbone.js]如何处理Model里面嵌入的Collection?
  13. 机器学习——KMeans聚类,KMeans原理,参数详解
  14. 在 .NET Core 中结合 HttpClientFactory 使用 Polly(下篇)
  15. 实时输出topk最频繁变动的股价
  16. dedecms模板中 if else怎么写
  17. http修改443端口,http 强制跳转https
  18. Python——pyiso8601
  19. UVA375
  20. Python笔记 #18# Pandas: Grouping

热门文章

  1. java之hibernate之crud
  2. isolate 通信
  3. 通过 Web Deploy 发布的配置
  4. Flask之threading.loacl方法
  5. [http] http body中chunked数据的编码格式
  6. Linux命令——id
  7. 【Flask】 python学习第一章 - 创建与运行参数
  8. http://www.easytest.xyz/login_action/
  9. 【转】spring bean 卸载
  10. Java精通并发-透过字节码理解synchronized关键字