Vue小练习--任务列表

这是一个非常实用的例子,主要实用的是v-model、v-on、v-for指令,javaScript的数组也会涉及一些,javaScript数组方法有很多,本文使用的添加元素和删除元素非常实用,可以记下来。

设计思路

很多例子看起来很难,即使学了再做依然很难,要学会化整为零,逐层向上。不可以一下实现一些复杂的功能,我们要学会分析问题。

1.首先建立简单的样式,我们要做一个添加任务,会自动把当前输入的任务添加到任务列表之中,建立前端样式

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- <script src="https://unpkg.com/vue@next"></script> -->
		<script src="js/v3.2.8/vue.global.prod.js"></script>
	</head>
	<body>
		<div id="app">
			新建列表:<input  type="text" style="margin-right: 10px;"/><button>添加任务</button>
		</div>
		<script>
			const App = {
				data() {
					
				}
			};
			Vue.createApp(App).mount('#app');
		</script>
	</body>
</html>

如上建立了一个vue的实例,给输入框添加style="margin-right: 10px;",让输入框和按钮能够有边距,好看一些。

添加data属性

如上所示,我们需要一个保存输入框的值和一个列表,在data属性中添加并绑定对应的元素。

html 复制代码
		<div id="app">
			新建列表:<input  type="text" v-model="plan" style="margin-right: 10px;"/><button>添加任务</button>
			<ul v-for="(val, index) in planlist">
				<li >{{index + 1}}.{{val}}</li>
			</ul>
		</div>
		<script>
			const App = {
				data() {
					return{
						plan: '',
						planlist: []
					}	
				}
			};
			Vue.createApp(App).mount('#app');
		</script>

添加按钮点击事件

按钮点击之后,将输入框输入的内容添加的任务列表中,如果输入的为空或者null则不添加,加入任务列表之后,将输入框的值设置为空,

使用push方法添加到列表中

js 复制代码
				methods: {
					addPlan() {
						if(this.plan == null || this.plan == ''){
							return
						}
						this.planlist.push(this.plan)
						this.plan = ''
					}
				}

添加删除按钮

如果任务不需要或者添加错误,需要删除,使用**splice(index,size)**方法删除元素,index是对应的数组索引,size是个数,splice方法的用法很多,参数不同效果也不一样,有兴趣的可以自己研究一下。

js 复制代码
deletePlan(index) {
						this.planlist.splice(index, 1)
					}

完整代码

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- <script src="https://unpkg.com/vue@next"></script> -->
		<script src="js/v3.2.8/vue.global.prod.js"></script>
	</head>
	<body>
		<div id="app">
			新建列表:<input  type="text" v-model="plan" style="margin-right: 10px;"/><button v-on:click="addPlan">添加任务</button>
			<ul v-for="(val, index) in planlist">
				<li >{{index + 1}}.{{val}} <button v-on:click="deletePlan(index)">删除任务</button></li>
			</ul>
		</div>
		<script>
			const App = {
				data() {
					return{
						plan: '',
						planlist: []
					}	
				},
				methods: {
					addPlan() {
						if(this.plan == null || this.plan == ''){
							return
						}
						this.planlist.push(this.plan)
						this.plan = ''
					},
					deletePlan(index) {
						this.planlist.splice(index, 1)
					}
				}
			};
			Vue.createApp(App).mount('#app');
		</script>
	</body>
</html>

一步一步做的话,看起来就没那么复杂了,那么开始vue之旅吧!希望这个文章能给你帮助。

相关推荐
星栈5 分钟前
Dioxus 多页面怎么做:`dioxus-router`、嵌套路由、`Outlet` 和页面组织,一篇给你讲顺
前端·rust·前端框架
用户987409238879 分钟前
用 Remotion + edge-tts 打造中文教学视频全自动流水线
前端
风骏时光牛马10 分钟前
Less前端工程化实战:变量混合器与项目样式分层落地
前端
假如让我当三天老蒯13 分钟前
Options API(选项式 API) 和 Composition API(组合式 API)
前端·vue.js·面试
SameX15 分钟前
iOS 独立开发实践:用 MapKit + 像素渲染实现 Citywalk 轨迹地图 App「雁过留痕」
前端
_柳青杨15 分钟前
一文吃透 Node.js 事件循环:从原理到 Node 20+ 重大变更
javascript·后端
skyey31 分钟前
页面加载时,深色模式闪白的问题解决
前端
IT_陈寒42 分钟前
Java 并行流把我坑惨了,这6小时加班值了
前端·人工智能·后端
anOnion10 小时前
构建无障碍组件之Menu Button pattern
前端·html·交互设计
用户479492835691511 小时前
claude Fable用不了?把Gpt 5.5pro接到你的claude code里
前端·后端