vue底部選擇器_Vue組件-極簡的地址選擇器

一、前言

本文用Vue完成一個極簡的地點選擇器,我們接下來帶大家實現這個。當然其中也有一些值得學習與注意的地方。話不多說,我們先上demo圖。因為每個人的需要不一樣,我這邊就不在實現更多的功能,所以留有更大的空間供大家增刪改。

二、需要學習的地方

(1)數據更新Vue無法監控

首先要說一下的就是這個點,我們在Vue中有個好處就是可以不用操作dom,直接操作數據。但是這其實也有Vue無法監控的數據。如數組和對象。當然這里只是指一小部分操作而已,大部分操作都是沒毛病的。接下來說說哪些數據操作Vue無法監控

1、數組

由于 JavaScript 的限制,Vue 不能檢測以下變動的數組:

當你利用索引直接設置一個項時,例如:vm.items[indexOfItem] = newValue

當你修改數組的長度時,例如:vm.items.length = newLength

意思就是下面的情況都不能監控到,因此這樣改變數組是不會刷新視圖的

var vm = new Vue({

data: {

items: ['a', 'b', 'c']

}

})

vm.items[1] = 'x' // 不是響應性的,

vm.items.length = 2 // 不是響應性的

實際上要解決這兩者的方法也簡單:

//解決第一類問題

vm.$set(vm.items, indexOfItem, newValue)

//為了解決第二類問題,你可以使用 splice:

vm.items.splice(newLength)

這樣就可以使得Vue監控到數組操作的變化。當然還有以下的操作Vue也可以監控到的

push()

pop()

shift()

unshift()

splice()

sort()

reverse()

2.對象

由于 JavaScript 的限制,Vue不能檢測對象屬性的添加或刪除! 這個是重點,如果動態的添加對象屬性的話,那么請注意你添加對象屬性的方式是否為$set,不然的話視圖很有可能不更新。

var vm = new Vue({

data: {

userProfile: {

name: 'Anika'

}

}

})

vm.userProfile.age = 27; //看著沒問題,實際上Vue無法監控

因此解決辦法也是老辦法,用

vm.$set(vm.userProfile, 'age', 27);

使用Object.assign()添加多個屬性也要注意一下用法

//錯誤

Object.assign(vm.userProfile, {

age: 27,

favoriteColor: 'Vue Green'

})

//正確

vm.userProfile = Object.assign({}, vm.userProfile, {

age: 27,

favoriteColor: 'Vue Green'

})

(2)V-for的用法

1.遍歷數組

這里直接擼碼,一看就懂

v-for = "(val,index) in arr"

//得到的就是值和數組下標

//習慣性用法

2.遍歷對象

v-for = "(val,key,index) in object"

//得到的就是鍵值對還有下標

//習慣性用法

CSS3樣式

當然這里就不多說了。這個直接給出傳送門:

實現極簡地點選擇

這里就放主要的代碼吧,雖然總代碼也不多

html部分

  • {{key}}

{{value}}

{{val}}

js

methods:{

getData(){

let xhr = new XMLHttpRequest(); //原生ajax

xhr.open('get','http://127.0.0.1:3001/read'); //請求mock

xhr.send();

xhr.onreadystatechange = ()=> {

if (xhr.readyState === 4 && xhr.status === 200) {

let locationN = JSON.parse(xhr.responseText); //獲取數據,地點json

for (let key of Object.keys(locationN)) { //遍歷取出數據,取得鍵值

for(let key2 of Object.keys(this.locationName)){ //遍歷data中locationName,為了分類

let pattern = new RegExp("["+key2.toString()+"]");

if(pattern.test(key)){ //正則匹配,如果找到就進入對應的分類對象中

//判斷該類中是否存在該字母這地名集合,如A,B,C

if (Array.isArray(this.locationName[key2][key.charAt(0)])) {

//如果存在則直接推入地名

this.locationName[key2][key.charAt(0)].push(locationN[key]);

//沒有則先創建再推入地名

} else {

this.$set(this.locationName[key2],key.charAt(0),[]);

this.locationName[key2][key.charAt(0)].push(locationN[key]);

}

break;

}

}

}

}

}

},

}

后話

到這里,我們就已經實現了該Vue組件,如果想細看代碼或者使用的話,

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445943.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445943.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445943.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FFmpeg源代碼簡單分析-編碼-avcodec_encode_video()已被send_frame 和 receive_packet替代

參考鏈接 FFmpeg源代碼簡單分析:avcodec_encode_video()_雷霄驊的博客-CSDN博客_avcodec_encode_video2 avcodec_encode_video() 該函數用于編碼一幀視頻數據。函數已被棄用參考鏈接:FFmpeg 新舊版本編碼 API 的區別_zouzhiheng的博客-CSDN博客 send_f…

《深入理解JVM.2nd》筆記(三):垃圾收集器與垃圾回收策略

文章目錄概述對象已死嗎引用計數算法可達性分析算法再談引用finalize():生存還是死亡回收方法區垃圾收集算法標記-清除算法復制算法標記-整理算法分代收集算法HotSpot的算法實現枚舉根結點安全點安全區域垃圾收集器SerialParNewParallel ScavengeSerial OldParallel…

python計算股票趨勢_通過機器學習的線性回歸算法預測股票走勢(用Python實現)...

1 波士頓房價數據分析安裝好Python的Sklearn庫后,在安裝包下的路徑中就能看到描述波士頓房價的csv文件,具體路徑是“python安裝路徑\Lib\site-packages\sklearn\datasets\data”,在這個目錄中還包含了Sklearn庫會用到的其他數據文件&#xff…

FFmpeg源代碼簡單分析-編碼-av_write_frame()

參考鏈接 FFmpeg源代碼簡單分析:av_write_frame()_雷霄驊的博客-CSDN博客_av_write_frame av_write_frame() av_write_frame()用于輸出一幀視音頻數據,它的聲明位于libavformat\avformat.h,如下所示。 /*** Write a packet to an output me…

《深入理解JVM.2nd》筆記(四):虛擬機性能監控與故障處理工具

文章目錄概述JDK的命令行工具jps:虛擬機進程狀況工具jstat:虛擬機統計信息監視工具jinfo:Java配置信息工具jmap:Java內存映像工具jhat:虛擬機堆轉儲快照分析工具jstack:Java堆棧跟蹤工具HSDIS:J…

postgresql 主從配置_Postgresql主從配置

一、簡介PostgreSql在9.0之后引入了主從的流復制機制,所謂流復制,就是從服務器通過tcp流從主服務器中同步相應的數據。這樣當主服務器數據丟失時從服務器中仍有備份。與基于文件日志傳送相比,流復制允許保持從服務器更新。 從服務器連接主服務…

FFmpeg源代碼簡單分析-編碼-av_write_trailer()

參考鏈接: FFmpeg源代碼簡單分析:av_write_trailer()_雷霄驊的博客-CSDN博客_av_malloc av_write_trailer() av_write_trailer()用于輸出文件尾,它的聲明位于libavformat\avformat.h,如下所示 /*** Write the stream trailer to…

科沃斯掃地機器人風扇模塊_掃地機器人不能開機,不能關機,風扇不轉

家庭的重要性自不必再細說,而小編今天要說的則是家庭環境的重要性。一般家庭最少居住三口人,兩個大人加一個孩子,每天回到家,看到家里整潔舒適的環境,心情該是多么地愜意。要是我們每天下班回到家中,看到滿…

MySQL關鍵字EXPLAIN的用法及其案例

文章目錄概述EXPLAIN輸出的列的解釋實例說明select_type的說明UNIONDEPENDENT UNION與DEPENDENT SUBQUERYSUBQUERYDERIVEDtype的說明system,consteq_refrefref_or_nullindex_mergeunique_subqueryindex_subqueryrangeindexALLextra的說明DistinctNot existsRange ch…

FFmpeg源代碼簡單分析-其他-日志輸出系統(av_log()等)

參考鏈接 FFmpeg源代碼簡單分析:日志輸出系統(av_log()等)_雷霄驊的博客-CSDN博客_ffmpeg源碼分析 日志輸出系統(av_log()等) 本文分析一下FFmpeg的日志(Log)輸出系統的源代碼。日志輸出部分的…

FFmpeg源代碼簡單分析-其他-AVClass和AVoption

參考鏈接 FFmpeg源代碼簡單分析:結構體成員管理系統-AVClass_雷霄驊的博客-CSDN博客FFmpeg源代碼簡單分析:結構體成員管理系統-AVOption_雷霄驊的博客-CSDN博客 概述 AVOption用于在FFmpeg中描述結構體中的成員變量。它最主要的作用可以概括為兩個字&a…

oracle手工收集awr報告_oracle手工生成AWR報告方法記錄-阿里云開發者社區

AWR(Automatic Workload Repository)報告是我們進行日常數據庫性能評定、問題SQL發現的重要手段。熟練掌握AWR報告,是做好開發、運維DBA工作的重要基本功。AWR報告的原理是基于Oracle數據庫的定時鏡像功能。默認情況下,Oracle數據庫后臺進程會以一定間隔…

IntelliJ IDEA 默認快捷鍵大全

文章目錄Remember these ShortcutsGeneralDebuggingSearch / ReplaceEditingRefactoringNavigationCompile and RunUsage SearchVCS / Local HistoryLive Templates參考資料Remember these Shortcuts 常用功能快捷鍵備注●Smart code completionCtrl Shift Space-●Search e…

python爬蟲的數據如何解決亂碼_寫爬蟲時如何解決網頁亂碼問題

實戰講解,文章較長,對爬蟲比較熟悉的瀏覽翻看章節 2.3 獲取新聞文本內容。寫爬蟲時經常對網址發起請求,結果返回的html數據除了標簽能看懂,其他的全部是亂碼。大家如果對爬蟲感興趣,請耐心閱讀本文,我們就以…

FFmpeg源代碼簡單分析-其他-libswscale的sws_getContext()

參考鏈接 FFmpeg源代碼簡單分析:libswscale的sws_getContext()_雷霄驊的博客-CSDN博客 libswscale的sws_getContext() FFmpeg中類庫libswsscale用于圖像處理(縮放,YUV/RGB格式轉換)libswscale是一個主要用于處理圖片像素數據的類…

IntelliJ IDEA 學習筆記

IDEA教學視頻 文章目錄1.IntelliJ IDEA的介紹和優勢IDEA 的主要優勢2.版本介紹與安裝前的準備3.IDEA的卸載4.IDEA的安裝5.安裝目錄和設置目錄結構的說明安裝目錄設置目錄6.啟動IDEA并執行HelloWorld7.Module的使用8.IDEA的常用設置9.快捷鍵的設置10.常用的快捷鍵的使用111.常用…

機器學習頂刊文獻_人工智能頂刊TPAMI2019最新《多模態機器學習綜述》

原標題:人工智能頂刊TPAMI2019最新《多模態機器學習綜述》來源:專知摘要:”當研究問題或數據集包括多個這樣的模態時,其特征在于多模態。【導讀】人工智能領域最頂級國際期刊IEEE Transactions on Pattern Analysis and Machine I…

Windows上同時運行兩個Tomcat

步驟 1.獲得免安裝包 從Tomcat官網下載免安裝包。 2.解壓復制 解壓并創建兩個副本tomcat1和tomcat2,它們的路徑分別為: tomcat1:C:\tomcat\double\apache-tomcat-7.0.90-8081tomcat2:C:\tomcat\double\apache-tomcat-7.0.90-…

FFmpeg源代碼簡單分析-其他-libswscale的sws_scale()

參考鏈接 FFmpeg源代碼簡單分析:libswscale的sws_scale()_雷霄驊的博客-CSDN博客_bad dst image pointers libswscale的sws_scale() FFmpeg的圖像處理(縮放,YUV/RGB格式轉換)類庫libswsscale中的sws_scale()函數。libswscale是一…

布朗橋python_MATLAB 里面有哪些加快程序運行速度的方法呢,求分享?

挖墳了…睡不著覺當個備忘錄記一下用過的方法吧1. 循環向量化2. 利用函數的矩陣輸入功能批量處理3. 必須用for且費時的地方改成單層parfor,要是循環次數比cpu核數還少反而會拖慢程序4. 非常大的矩陣的運算可以用gpuArray(這個在matlab 深度學習工具箱中深有體會)5. …