11-添加收貨信息

在新增地址的彈窗組件中:
首先偷拔,增加新地址坯癣,就要把所有的信息儲存到一個變量中 : receive芍秆。
新增的內(nèi)容要添加到receiveInfo(vuex)中,格式也是一致的钱床。

  1. 在組件中建立一個變量荚斯,和數(shù)據(jù)格式保持一致,然后用指令綁定到標簽上查牌。
======
//組件中
 data() {
      return {
        receive : {
            'name': '',
            'phone': '',
            'areaCode': '',
            'landLine': '',
            'provinceId': 0,
            'province': '',
            'cityId': 0,
            'city': '',
            'countyId': 0,
            'county': '',
            'add' : '',
            'default': false
        }
      }
 }
====
然后將這些數(shù)據(jù)綁定到對應(yīng)的標簽上
  1. 省份事期,城市,自己模擬一個數(shù)據(jù),圖示:


    屏幕快照 2018-03-13 下午10.08.00.png

    2-1 首先綁定省份數(shù)據(jù)纸颜。直接綁定即可兽泣。

<option :value="province.area_id" v-for="province,index in addList">
  {{province.area_name}}
</option>

2-2 點擊省份的時候,就要顯示渲染賭贏的城市信息胁孙,需要做一個計算唠倦。

這個計算很重要,是這一步實現(xiàn)了真正的綁定數(shù)據(jù)涮较,
首先需要拿到數(shù)據(jù)稠鼻,并掛載。然后循環(huán)這個數(shù)據(jù)狂票,先對比省份ID候齿,并綁定。然后我們需要做一個計算闺属,當(dāng)省份對應(yīng)上之后慌盯,可以新建一個數(shù)組,然后將這個省份對應(yīng)的城市列表賦值給這個數(shù)組掂器,頁面上去綁定這個數(shù)組即可亚皂。

// 監(jiān)控countryId
 watch: {
          'receive.countyId'(){
             this.countyList.forEach((county) => {
                    // 當(dāng)循環(huán)數(shù)據(jù)中的省份ID對應(yīng)上當(dāng)前的標簽上綁定的數(shù)據(jù)的ID
                    if(county.area_id === this.receive.countyId){
                        this.receive.county = county.area_name
                        return
                    } 
                })
          },
},
computed: {
            // 點擊省份唉匾,渲染對應(yīng)城市
            cityList(){
                let cityList = []
                this.addList.forEach((province) => {
                    // 當(dāng)循環(huán)數(shù)據(jù)中的省份ID對應(yīng)上當(dāng)前的標簽上綁定的數(shù)據(jù)的ID
                    if(province.area_id === this.receive.provinceId){
                      // 改變對應(yīng)的receive的數(shù)據(jù)
                      this.receive.province = province.area_name
                      cityList = province.city_list
                      return
                    } 
                })
                if(this.receive.provinceId === '0'){
                    this.receive.cityId = 0
                    this.receive.countyId = 0
                }
                return cityList
            },
            // 點擊城市孕讳,渲染對應(yīng)區(qū)縣
            countyList(){
                let countyList = []
                this.cityList.forEach((city) => {
                    // 當(dāng)循環(huán)數(shù)據(jù)中的省份ID對應(yīng)上當(dāng)前的標簽上綁定的數(shù)據(jù)的ID
                    if(city.area_id === this.receive.cityId){
                        // 改變對應(yīng)的receive的數(shù)據(jù)
                        this.receive.city = city.area_name
                        countyList = city.county_list
                        return
                    } 
                })
                if(this.receive.cityId === '0'){
                    this.receive.countyId = 0
                }
                return countyList
            }
        },
========
<option :value="province.area_id" v-for="province,index in addList">
  {{province.area_name}}
</option>
<option 
  :value="city.area_id" 
  v-for="city,index in cityList">
  {{city.area_name}}
</option>
  1. 驗證每項信息是否填寫
    首先需要定義一個變量匠楚,isRight巍膘。寫一個方法inspectReceive,判斷receive每一項都有內(nèi)容芋簿,就是驗證通過峡懈。什么時候時候判斷(執(zhí)行inspectReceive)?在receive的每一項都被改變(都添加內(nèi)容的時候)与斤,所以需要將receive進行深度監(jiān)控肪康。要監(jiān)控每一項改變荚恶,所以就要在點擊的時候去改變receive里面對應(yīng)的值。
data() {
            return {
                isRight:false  //判斷每項信息是否填寫正確
            }
        }
}
=========
//computed中
            // 驗證每條信息是否正確:依次判斷receive的值
            inspectReceive(){
              if(this.receive.name && !this.phoneError && this.receive.province && this.receive.city && this.receive.county && this.receive.add){
                this.isRight = true
              }else{
                this.isRight = false
              }
            }
========
        watch: {
          receive : {  // 當(dāng)receive有變化的時候執(zhí)行一次驗證
            handler(){ //方法
              this.inspectReceive()
            },
            deep:true //是否深度監(jiān)控
          }
        }

4.點擊按鈕提交新增的地址信息
如果每一項都驗證通過了磷支,就提交vuex中的submitReceive谒撼,這個函數(shù)做的事情是:先判斷當(dāng)前數(shù)據(jù)是否點擊了設(shè)置為默認地址的按鈕,如果點擊了雾狈,就循環(huán)之前默認的已有的兩條地址:receiveInfo廓潜,目的是將這兩個數(shù)據(jù)的default都設(shè)置為false.然后將當(dāng)前的這個data,push到receiveInfo中善榛。
難點:如果勾選了辩蛋,怎么設(shè)置當(dāng)前這條信息是默認選中的狀態(tài)?
如果用watch移盆,發(fā)現(xiàn)根本監(jiān)控不到悼院。所以用了一個笨辦法:提交之后,窗口就關(guān)閉了咒循,那么在關(guān)閉的時候据途,重新去改變index值,就可以了叙甸。就等于是局部初始化了一下昨凡。
created通常用于初始化某些屬性值,然后再對視圖進行渲染蚁署。在這里用created是為了要把默認地址做一個初始化便脊,讓默認地址在渲染的時候為被選中狀態(tài)。

// 提交訂單頁
    created(){
        this.$store.state.receiveInfo.forEach((receive,index) => {
            if (receive.default) {
                this.receiveIndex = index
                return
            }
        })
    }
// vuex
// 提交新的地址
    submitReceive (state,data) {
      if (data.default) { // 是否勾選設(shè)置為默認地址按鈕
        state.receiveInfo.forEach((receive) => {
          receive.default = false
        })
        state.receiveInfo.push(data)
      }
    }
// 提交新增地址信息
  submitReceiveHandle(){
    if(this.isRight){
      this.$store.commit('submitReceive',this.receive)
      this.$emit('close')
     }
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末光戈,一起剝皮案震驚了整個濱河市哪痰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌久妆,老刑警劉巖晌杰,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異筷弦,居然都是意外死亡肋演,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門烂琴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爹殊,“玉大人,你說我怎么就攤上這事奸绷」?洌” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵号醉,是天一觀的道長反症。 經(jīng)常有香客問我辛块,道長,這世上最難降的妖魔是什么铅碍? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任润绵,我火速辦了婚禮,結(jié)果婚禮上胞谈,老公的妹妹穿的比我還像新娘授药。我一直安慰自己,他們只是感情好呜魄,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布悔叽。 她就那樣靜靜地躺著,像睡著了一般爵嗅。 火紅的嫁衣襯著肌膚如雪娇澎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天睹晒,我揣著相機與錄音趟庄,去河邊找鬼。 笑死伪很,一個胖子當(dāng)著我的面吹牛戚啥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锉试,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼猫十,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了呆盖?” 一聲冷哼從身側(cè)響起拖云,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎应又,沒想到半個月后宙项,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡株扛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年尤筐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洞就。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡盆繁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奖磁,到底是詐尸還是另有隱情改基,我是刑警寧澤繁疤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布咖为,位于F島的核電站秕狰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏躁染。R本人自食惡果不足惜鸣哀,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吞彤。 院中可真熱鬧我衬,春花似錦、人聲如沸饰恕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埋嵌。三九已至破加,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雹嗦,已是汗流浹背范舀。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留了罪,地道東北人锭环。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像泊藕,于是被迫代替她去往敵國和親辅辩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,182評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理娃圆,服務(wù)發(fā)現(xiàn)汽久,斷路器,智...
    卡卡羅2017閱讀 134,668評論 18 139
  • 殤 心若離你去了遠方 何必在乎一具空空皮囊 你的冷漠恰天山冰雪 從此將我心中的烈火掩埋 月下把酒當(dāng)歌 花...
    南西山人閱讀 373評論 2 10
  • 致良知是一種偉大的力量踊餐。 日期:2017.12.7 姓名:李建英 1.讀原文: 《黃以方錄》51.7~51....
    若嘉閱讀 363評論 0 0