Vue(八) TodoList功能开发

Todolist开发

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Todolist</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<div>
				<input v-model="inputValue"/>
				<button @click="handleSubmit">提交</button>
			</div>
			<ul>
				<li v-for="(item,index) of list" :key="index">
					{{item}}
				</li>
			</ul>
		</div>
		<script>
			new Vue({
				el:"#app",
				data:{
					inputValue:'',
					list:[]
				},
				methods:{
					handleSubmit:function(){
						this.list.push(this.inputValue)
						this.inputValue=''
					}
				}
			})
		</script>
	</body>
</html>

效果

在这里插入图片描述

Todolist的组件拆分

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Todolist</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<div>
				<input v-model="inputValue"/>
				<button @click="handleSubmit">提交</button>
			</div>
			<ul>
				<todo-item 
				v-for = "(item,index) of list"
				:key="index"
				:content="item"
				>
				</todo-item>
			</ul>
		</div>
		<script>
			Vue.component('todo-item',{
				props:['content'],
				template:'<li>{{content}}</li>'
			})
			
			new Vue({
				el:"#app",
				data:{
					inputValue:'',
					list:[]
				},
				methods:{
					handleSubmit:function(){
						this.list.push(this.inputValue)
						this.inputValue=''
					}
				}
			})
		</script>
	</body>
</html>

效果和上面一样
组件和实例的关系
vue中每一个组件都是一个实例

小练习
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Todolist</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<div>
				<input v-model="inputValue"/>
				<button @click="handleSubmit">提交</button>
			</div>
			<ul>
				<todo-item 
				v-for = "(item,index) of list"
				:key="index"
				:content="item"
				>
				</todo-item>
			</ul>
		</div>
		<script>
			Vue.component('todo-item',{
				props:['content'],
				template:'<li @click="handleClick">{{content}}</li>',
				methods:{
					handleClick:function(){
						alert('你非常聪明!')
					}
				}
			})
			
			new Vue({
				el:"#app",
				data:{
					inputValue:'',
					list:[]
				},
				methods:{
					handleSubmit:function(){
						this.list.push(this.inputValue)
						this.inputValue=''
					}
				}
			})
		</script>
	</body>
</html>

效果图

在这里插入图片描述

实现Todolist的删除功能

里面的知识点 子组件和父组件的通信

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Todolist</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<div>
				<input v-model="inputValue"/>
				<button @click="handleSubmit">提交</button>
			</div>
			<ul>
				<todo-item 
				v-for = "(item,index) of list"
				:key="index"
				:content="item"
				:index="index"
				@delete="handleDelete"
				>
				</todo-item>
			</ul>
		</div>
		<script>
			Vue.component('todo-item',{
				props:['content','index'],
				template:'<li @click="handleClick">{{content}}</li>',
				methods:{
					handleClick:function(){
						this.$emit('delete',this.index)
					}
				}
			})
			
			new Vue({
				el:"#app",
				data:{
					inputValue:'',
					list:[]
				},
				methods:{
					handleSubmit:function(){
						this.list.push(this.inputValue)
						this.inputValue=''
					},
					handleDelete:function(index){
						this.list.splice(index,1)
					}
					
				}
			})
		</script>
	</body>
</html>

效果图
就是你点击一个删除一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MW0309

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值