掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
微構(gòu)網(wǎng)絡(luò)團(tuán)隊在開發(fā)新一個移動商城項目的時候,負(fù)責(zé)個人中心模塊的小伙伴說這個類庫比之前我們自己直接寫的方案體驗(yàn)更好些,其他的小伙伴看了一下還真是的,因?yàn)檫@個插件體驗(yàn)非常接近IOS原生體驗(yàn)(當(dāng)然流暢度上還是不如原生的)。但這個同學(xué)說但是我在編輯的時候怎么辦啊,比如說一個收貨地址,原來已經(jīng)選擇了湖南省—長沙市—芙蓉區(qū),那么編輯的時候總不讓還來重新選擇吧。
有一個小伙伴說人家京東也是這樣的,編輯的時候不管之前選了那座城市的哪個區(qū),編輯必須重新從北京開始選擇。馬上被我懟了回去,總不能看人家沒做好這個體驗(yàn)就放棄吧,你都還沒開始研究就放棄,跟咱們團(tuán)隊的文化不相符啊。其實(shí)在LArea.js插件中預(yù)留了關(guān)于默認(rèn)值設(shè)置的API。
比如我們使用var area=new LArea();得到一個對象,那么我們可以使用以下代碼來設(shè)置插件初始化的地區(qū)選擇值:
area.value=[x,y,z];
其中的x、y、z就是三級地區(qū)當(dāng)前所在的索引(我們可以理解我第幾條,默認(rèn)從0開始),比如x=0的時候,默認(rèn)肯定就是北京啦(第一個嘛)。這時候有人可能會想,就算我知道現(xiàn)在我選擇的是湖南省—長沙市—芙蓉區(qū),但我也不知道對應(yīng)的x、y、z的值啊。其實(shí)這就是JavaScript基礎(chǔ)問題啦,比如當(dāng)type=2時,我們可以通過遍歷數(shù)據(jù)源的json數(shù)據(jù)來得到x、y、z,如下就是最基礎(chǔ)的代碼(加上就是默認(rèn)的數(shù)據(jù)源,省、市、區(qū)三級數(shù)據(jù)分別賦給provs_data、 citys_data、dists_data這三個變量,這也是插件默認(rèn)數(shù)據(jù)包的樣子):
for(var i in provs_data){ if(provs_data[i].text=='湖南省'){ var x=i; var city=citys_data[provs_data[i].value]; for(var j in city){ if(city[j].text=='長沙市'){ var y=j; var district=dists_data[city[j].value]; for(var k in district){ if(district[k].text=='芙蓉區(qū)'){ var z=k; } } } } } }
通過以上可以得到x=17,y=0,z=1,然后通過上述設(shè)置,那么就可以實(shí)現(xiàn)默認(rèn)就選擇湖南省—長沙市—芙蓉區(qū),而不用用戶從北京開始選擇,這樣就可以極大的節(jié)省用戶的操作時間,提高用戶體驗(yàn)。當(dāng)然實(shí)際上我們可以做進(jìn)一步的優(yōu)化處理,使得更加優(yōu)雅和穩(wěn)健、性能更加高效。
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流