您好,登錄后才能下訂單哦!
一、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> <div class="container" id="app"> <input v-model="message" placeholder="請任意輸入" class="form-control"> <p>Message is: {{ message }}</p> </div> <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 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> <div 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> <div class="form-group"> <label for="exampleInputEmail1">任務描述</label> <input type="text" class="form-control" placeholder="請輸入你要添加的任務" required> </div> <div class="form-group"> <button class="btn btn-primary" type="submit">添加任務</button> </div> </form> <p>已完成的Task</p> <ol class="list-group"> <li class="list-group-item"> JavaScript高級程序設計 </li> </ol> </div> </body> </html>
四、實例化Vue及應用Vue指令Directives添加項目中
<div 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> <div class="form-group"> <label for="exampleInputEmail1">任務描述</label> <input type="text" class="form-control" placeholder="請輸入你要添加的任務" v-model="newTask" required> </div> <div class="form-group"> <button class="btn btn-primary" type="submit" v-on:click="addTask">添加任務</button> </div> </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> </div> <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
<div id="app"> <div class="collection"> <a href="#!" class="collection-item" v-for="gameName in gameNames" :class="{active: activeName == gameName}" @click="selected(gameName)">{{gameName}}</a> </div> </div>
JS
new Vue({ el: "#app", data: { gameNames: ['魔獸世界', '暗黑破壞神Ⅲ', '星際爭霸Ⅱ', '爐石傳說', '風暴英雄', '守望先鋒' ], activeName: '' }, methods: { selected: function(gameName) { this.activeName = gameName } } })
總結
以上所述是小編給大家介紹的Vue.js實現列表清單的操作,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。