详解Vue.js如何实现列表清单
本文主要给大家分享Vue.js实现列表清单的操作方法,Vue.js在设计上采用MVVM模式,当View视图层发生变化时,会自动更新到ViewModel。需要的朋友参考下吧,希望能帮助到大家。
一、Vue.js简要说明
Vue.js (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架。与前端框架Angular一样, Vue.js在设计上采用MVVM模式,当View视图层发生变化时,会自动更新到ViewModel.反之亦然,View与ViewModel之间通过数据双向绑定(data-binding)建立联系,如下图所示
Vue.js通过MVVM模式将视图与数据分成两部分(或者说视图代码与业务逻辑的解耦),因此我们只需关心数据的操作,DOM的视图的更新等一系列事情,Vue会帮我们自动搞定。
如通过v-model指令实现数据的双向绑定,用户在输入框中输入任意的值,实时显示用户输入message的值(对应上述MVVM模式关系图不难理解)
<!DOCTYPE html> <html> <head> <title>Vue.js数据的双向绑定</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 引入 Bootstrap --> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <script src="https://unpkg.com/vue"></script> </head> <body> <p class="container" id="app"> <input v-model="message" placeholder="请任意输入" class="form-control"> <p>Message is: {{ message }}</p> </p> <script type="text/javascript"> new Vue({ //创建Vue实例 el:"#app", //挂载创建Vue实例对象 data: { message : "Hello Vue.js" }, methods:{} }) </script> </body> </html>
以下楼主直接绕过Vue.js基础语法,对基础语法不了解的可以查阅相关资料,从通过Vue.js优雅实现任务列表操作案例说起,将Vue.js碎片化的知识点模块整合在一块。
接下来一块体验一下Vue.js(读音 /vjuː/,类似于 view) 的小清新的/简洁的写法吧.
二、Vue.js优雅的实现任务列表的操作
Vue.js 优雅实现任务列表效果图预览请点击
三、HTML骨架CSS样式代码
使用BootStrap前端响应式开发框架,HTML骨架及CSS样式Demo如下
<!DOCTYPE html> <html> <head> <title>Vue.js</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 引入 Bootstrap --> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <!-- 引入 vue.js --> <script src="https://unpkg.com/vue"></script> <style type="text/css"> .list-group button { background: none; border: 0; color: red; outline: 0; float: right; font-weight: bold; margin-left: 5px; } </style> </head> <body> <p class="container" id="app"> <p v-show="remainTask.length>0">任务列表</p> <ul class="list-group"> <li class="list-group-item"> <span title="编辑任务">Vue.js - 是一套构建用户界面的渐进式框架</span> <button title="移除任务">✗</button> <button title="任务完成">✔</button> </li> </ul> <form> <p class="form-group"> <label for="exampleInputEmail1">任务描述</label> <input type="text" class="form-control" placeholder="请输入你要添加的任务" required> </p> <p class="form-group"> <button class="btn btn-primary" type="submit">添加任务</button> </p> </form> <p>已完成的Task</p> <ol class="list-group"> <li class="list-group-item"> JavaScript高级程序设计 </li> </ol> </p> </body> </html>
四、实例化Vue及应用Vue指令Directives添加项目中
<p class="container" id="app" v-cloak> <p v-show="remainTask.length>0">任务列表 ({{remainTask.length}})</p> <ul class="list-group"> <template v-for="task in remainTask"> <li class="list-group-item"> <span v-on:dblclick="editTask(task)" title="编辑任务">{{task.text}}</span> <button v-on:click="removeTask(task)" title="移除任务">✗</button> <button v-on:click="completeTask(task)" title="任务完成">✔</button> </li> </template> </ul> <form> <p class="form-group"> <label for="exampleInputEmail1">任务描述</label> <input type="text" class="form-control" placeholder="请输入你要添加的任务" v-model="newTask" required> </p> <p class="form-group"> <button class="btn btn-primary" type="submit" v-on:click="addTask">添加任务</button> </p> </form> <p>已完成的Task({{filterTask.length}})</p> <ol class="list-group"> <template v-for="task in filterTask"> <li class="list-group-item"> {{task.text}} </li> </template> </ol> </p> <script type="text/javascript"> var app = new Vue({ //创建Vue对象实例 el:"#app", //挂载DOM元素的ID data: { tasks : [ { text : "Vue.js - 是一套构建用户界面的渐进式框架", complete:false}, { text : "Bootstrap 响应式布局", complete:false }, { text : "Webpack前端资源模块化管理和打包工具", complete:false}, { text : "Yarn 中文手册Yarn 是一个快速、可靠、安全的依赖管理工具", complete:true}, { text : "JavaScript语言精粹", complete:false}, { text : "JavaScript高级程序设计", complete:true} ], newTask:"程序员的修炼之道" //默认值 }, methods:{ addTask:function(event){ //添加任务 event.preventDefault(); this.tasks.push({ text: this.newTask, complete: false }); this.newTask = ""; }, editTask:function(task){ //编辑任务 //移除当前点击task this.removeTask(task); //更新vue实例中newTask值 this.newTask = task.text; }, removeTask: function(task){ //删除任务 //指向Vue实例中的tasks _tasks = this.tasks; //remove _tasks.forEach(function(item, index){ if(item.text == task.text){ _tasks.splice(index, 1); } }) }, completeTask: function(task){ //任务完成状态 task.complete = true; //设置任务完成的状态 } }, //用于计算属性,属性的计算是基于它的依赖缓存(如vue实例中的tasks) //只有当tasks数据变化时,才会重新取值 computed:{ remainTask:function(){ //筛选未完成的记录 return this.tasks.filter(function(task){ //filter过滤器 return !task.complete; }) }, filterTask:function(){ //筛选已完成的记录 return this.tasks.filter(function(task){ return task.complete; }) } } }); </script>
v-cloak 主要解决页面初始化慢,乱码的问题(如显示页面显示Vue取值表达式);
v-show 指令简单的CSS属性的切换,适合频繁的切换 CSS属性从display的切换)
v-if 指令决定页面是否插入,相对v-show切换开销比较大
v-on:dblclick, v-on:click 页面事件的绑定
(如 v-on:dblclick(task) 方法名dblclick() 参数task 是的当前点击的tasks数组中的某一个对象
v-for 迭代指令 循环遍历数组 filter 主要用于筛选符合条件的数据/日期格式化等
computed用于计算属性,属性的计算是基于它的依赖缓存(如vue实例中的tasks) 只有当tasks数据变化时,才会重新取值
PS:下面看下使用Vue.js实现列表选中效果
html
<p id="app"> <p class="collection"> <a href="#!" class="collection-item" v-for="gameName in gameNames" :class="{active: activeName == gameName}" @click="selected(gameName)">{{gameName}}</a> </p> </p>
JS
new Vue({ el: "#app", data: { gameNames: ['魔兽世界', '暗黑破坏神Ⅲ', '星际争霸Ⅱ', '炉石传说', '风暴英雄', '守望先锋' ], activeName: '' }, methods: { selected: function(gameName) { this.activeName = gameName } } })
大家学完本文都掌握了Vue.js实现列表清单的操作方法了吗?赶紧动手尝试一下吧。
相关推荐:
JavaScript如何实现Select列表内容自动滚动方法介绍
以上是详解Vue.js如何实现列表清单的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

为了方便很多人移动办公,很多笔记本都带有无线网的功能,但有些人的电脑上无法显示WiFi列表,现在就给大家带来win7系统下遇到这种问题的处理方法,一起来看一下吧。win7无线网络列表显示不出来1、右键你电脑右下角的网络图标,选择“打开网络和共享中心”,打开后再点击左边的“更改适配器设置”2、打开后鼠标右键选择无线网络适配器,选择“诊断”3、等待诊断,如果系统诊断出问题那就修复它。4、修复完成之后,就可以看到WiFi列表了。

JavaScript是一种广泛应用于Web开发的编程语言,而WebSocket则是一种用于实时通信的网络协议。结合二者的强大功能,我们可以打造一个高效的实时图像处理系统。本文将介绍如何利用JavaScript和WebSocket来实现这个系统,并提供具体的代码示例。首先,我们需要明确实时图像处理系统的需求和目标。假设我们有一个摄像头设备,可以采集实时的图像数
