vue中添加與刪除,關鍵字搜索

来源:https://www.cnblogs.com/520yh/archive/2019/10/12/11659993.html
-Advertisement-
Play Games

1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <m... ...


  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5     <meta charset="UTF-8">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>Document</title>
  9     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 10 </head>
 11 
 12 <body>
 13     <div id="app">
 14         <div>
 15             <label>Id:
 16                 <input type="text" v-model='id'>
 17             </label>
 18             <label for="">Name:
 19                 <input type="text" v-model='name' @keyup.enter='add'>
 20             </label>
 21             <input type="button" value="添加" @click='addBtnFlag && add()'>
 22             搜索:
 23             <input type="text" v-model='keywords' id="search" v-focus v-color>
 24         </div>
 25         <!-- 註意: v-for 迴圈的時候 , key 屬性只能使用 number獲取string -->
 26         <!-- 註意:key 在使用的時候,必須使 v-bind 屬性綁定的形式 指定 key 的值 -->
 27         <!--在組件中,使用v-for迴圈的時候,或者在一些特殊的情況中,如果 v-for 有問題 ,必須 在使用 v-for 的同時 ,指定 唯一的字元串/數字 類型 :key  值  -->
 28         <!-- v-for  中的數據,都是直接從 data 上的 list 中直接渲染過來的 -->
 29         <!-- 自定義一個  search  方法,同時 ,把所有的關鍵詞,通過傳參的形式,傳遞給了 search 方法 -->
 30         <!-- 在 search  方法內部,通過 執行 for 迴圈,把所有符合  搜索關鍵字的數據,保存到 一個新數組中 返回 -->
 31         <p v-for='item in search(keywords)' :key="item.id">
 32             <input type="checkbox">
 33             {{item.id}}---- {{item.name}}
 34             <!-- <a @click='shift(index)'>刪除</a> -->
 35             -----------------<a @click.prevent="del(item.id)">刪除</a>
 36         </p>
 37     </div>
 38 
 39     <script>
 40         //使用 Vue.directive() 定義全局的指令 v-focus
 41         //其中:參數1:指令的名稱,註意,在定義的時候,指令的名稱前面,不需要加 v- 首碼,
 42         //但是:再調用的時候,必須 在指令名稱前面 加上 v-  首碼來進行調用
 43         //參數2:是一個對象,這個對象身上,有一些指令相關的函數可以在特定的階段,執行相關的操作
 44         Vue.directive('focus', {
 45             bind: function (el) {
 46                 //每當指令綁定到元素上的時候,會立即執行這個 bind 函數,只執行一次
 47                 //註意:在每個 函數中,第一個參數,永遠是 el  , 表示 被綁定了指令的那個元素,這個 el 參數,是一個原生的的JS對象
 48                 //在元素 剛綁定了指令的時候,還沒有 插入到 DOM 中去,這時候,調用focus 方法沒有作用
 49                 //因為,一個元素,只有插入DOM之後,才能獲取焦點
 50                 el.focus()
 51             },
 52             inserted: function (el) {
 53                 //inserted 表示元素 插入到DOM中的時候,會執行 inserted 函數【觸發一次】
 54                 el.focus()
 55             },
 56             updated: function (el) {
 57                 //當VNode更新的時候 會執行updated  可能會觸發多次
 58             },
 59         })
 60 
 61         Vue.directive('color',{
 62             bind: function (el) {
 63                 el.style.color = 'red'
 64             }
 65         })
 66 
 67 
 68 
 69         var vm = new Vue({
 70             el: "#app",
 71             data: {
 72                 id: '',
 73                 name: '',
 74                 keywords: '',//關鍵詞
 75                 addBtnFlag:true,
 76                 list: [
 77                     { id: 1, name: '奧迪' },
 78                     { id: 2, name: '寶馬' },
 79                     { id: 3, name: '賓士' },
 80                     { id: 4, name: '瑪莎拉蒂' },
 81                     { id: 5, name: '保時捷' },
 82                     { id: 6, name: '五菱巨集光' }
 83                 ]
 84               
 85             },
 86             methods: {
 87                 add() {
 88                    
 89                     // this.list.push({ id: this.id, name: this.name })
 90                   
 91                     if( this.id == ''){
 92 
 93                         this.addBtnFlag=false
 94 
 95                     }else{
 96 
 97                         var car = { id: this.id, name: this.name }
 98                         this.list.push(car)
 99                         this.id = this.name = ''
100                     }
101                 
102                 },
103                 del(id) {
104                     //根據ID刪除
105                     // this.list.some((item,i)=>{
106                     //     if(item.id == id){
107                     //         this.list.splice(i,1)
108                     //         return true;
109                     //     }
110                     // })
111                     var index = this.list.findIndex(item => {
112                         if (item.id == id) {
113                             return true;
114                         }
115                     })
116                     this.list.splice(index, 1)
117                 },
118                 search(keywords) {
119                     //根據關鍵字,進行數據的搜索
120                     // var newList = []
121                     // this.list.forEach(item =>{
122                     //     if(item.name.indexOf(keywords) != -1){
123                     //         newList.push(item)
124                     //     }
125                     // }) 
126                     // return newList
127 
128 
129                     //註意:forEach some  filter findIndex  這些都是屬於數組的新方法,
130                     //都會對數組中的每一項,進行遍歷,執行相關的操作;
131 
132                     return this.list.filter(item => {
133 
134                         //if(item.name.indexOf(keywords) != -1)
135 
136                         //註意:ES6中,為字元串提供了一個新的方法,叫做 string.prototype.includes('要包含的字元串')
137 
138                         //如果包含,則返回 true 否則返回false
139 
140                         //contain
141 
142                         if (item.name.includes(keywords)) {
143                             return true
144                         }
145 
146                     })
147                     // return newList
148 
149                 }
150 
151             }
152         })
153 
154     </script>
155 </body>
156 
157 </html>

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 六福會員 X ...
  • 1、將數組轉換成Set對象 2、數組去重 3、Set.prototype.has(value)判斷該值是否存在於Set對象中,返回布爾值 結合filter()方法,返回值為true的集合 ...
  • 剛纔在看阮一峰老師的《ES6標準入門》,在介紹 let 那一段時有這麼一段話 我就自己在控制台試了一下這段代碼,輸出果然的是"abc",於是我就把代碼稍微修改了下 也沒啥問題,證明瞭上面那段話的正確性。 然後,我又把 i++ 前的 console.log(i) 挪到了下麵,神奇的事情發生了! 剛纔還 ...
  • 一、vue-router 1、簡介 (1)SPA:Single Page Application(單頁應用),簡單理解就是只有一個web頁面的應用。即載入單個HTML頁面,並根據用戶與程式的交互 動態更新頁面的 web應用程式。其載入頁面時不會載入整個頁面,只是更新部分內容。 (2)路由:指的是SP ...
  • 函數化編程 百科定義: 函數化編程: 又稱泛函數編程,是一種編程泛式,它將電腦運算視為數學上的函數計算,並且避免使用程式狀態以及易變對象。 簡單理解,以函數為單元,對複雜邏輯進行拆分,將複雜邏輯轉化為多個簡單函數邏輯,同時通過對函數進行層層調用,來達到最終目的。 特點: 函數可以作為參數傳入,也可以 ...
  • 一、總體思路: 1、表格無邊框,背景顏色設置一種顏色(#DCDFE6),這樣表格的邊框的顏色就是表格的背景顏色; 2、單元格間距為1px,背景顏色設置為白色(#FFFFFF) 二、效果圖 ...
  • 接前幾天寫的一篇博客 https://www.cnblogs.com/ttjm/p/11307462.html 在ie瀏覽器測試發現打不開,經調查問題如下 1 如果在本地開發調試,請求介面報錯如下 經查是項目啟動和介面地址不同源ie有所限制,只需npm run build 放到伺服器上測試即可 2 ...
  • var time = new Date(); // var day=time.getDate(); // var hours=time.getHours; // var minutes=time.getMinutes(); // var seconds=time.getSeconds(); var ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...