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