臺灣郵遞區號 Vue components

# 基本設定


import { createApp } from 'vue'

createApp({
  components: {
    // ... //
  }
}).mount('#app')
        

# 所有郵遞區號


import { Zipcode } from 'twzipcode-vue'

...
  components: {
    TwzipcodeZipcode: Zipcode,
  },
...
          
        

<twzipcode-zipcode text-template=":zipcode :county-:city"></twzipcode-zipcode>

<select id="twzipcode__zipcode" class="twzipcode twzipcode__zipcode">
  <option value="100">100 臺北市-中正區</option>
  <option value="103">103 臺北市-大同區</option>
          
        

# 以縣市分組


import { ZipcodeGroupby } from 'twzipcode-vue'

...
  components: {
    TwzipcodeZipcodeGroupby: ZipcodeGroupby,
  },
...
          
        

<twzipcode-zipcode-groupby></twzipcode-zipcode-groupby>

<select id="twzipcode__zipcode--groupby" class="twzipcode twzipcode__zipcode twzipcode__zipcode--groupby">
  <optgroup label="臺北市">
    <option value="100">中正區</option>
    <option value="103">大同區</option>
          
        

# 縣市


import { County } from 'twzipcode-vue'

...
  components: {
    TwzipcodeCounty: County,
  },
...
          
        

<twzipcode-county></twzipcode-county>

<select id="twzipcode__county" class="twzipcode twzipcode__county">
  <option value="臺北市">臺北市</option>
  <option value="基隆市">基隆市</option>
          
        

# 樣式


.twzipcode {
  font-weight: 700;
}

.twzipcode__county {
  background-color: red;
  color: white;
}
// 如果只有一個,可使用 #twzipcode__county 

.twzipcode__zipcode--groupby {
  background-color: yellow;
  color: brown;
}
// 如果只有一個,可使用 #twzipcode__zipcode--groupby

.twzipcode__zipcode {
  background-color: lightskyblue;
  color: dimgrey;
}
// 如果只有一個,可使用 #twzipcode__zipcode
          
        
# value與text格式

<twzipcode-zipcode value-template=":county:city"
                   model-value="臺北市信義區"
                   text-template=":zipcode :county:city"></twzipcode-zipcode>

<select id="twzipcode__zipcode" class="twzipcode twzipcode__zipcode">
  <option value="臺北市中正區">100 臺北市中正區</option>
  <option value="臺北市大同區">103 臺北市大同區</option>
          
        

# 英語

縣市的 value 預設為:id,縣市的id即為縣市中文名稱;若需要英文名稱可改成:name

value 和 text 可同時使用不同的 locale 。


<twzipcode-county value-locale="en"
                  text-locale="en"></twzipcode-county>

<twzipcode-zipcode-groupby value-locale="en"
                           text-locale="en"></twzipcode-zipcode-groupby>

<twzipcode-zipcode value-locale="en"
                   text-locale="en"
                   text-template=":zipcode :county / :city"></twzipcode-zipcode>


<select id="twzipcode__county" class="twzipcode twzipcode__county">
  <option value="臺北市">Taipei City</option>
  <option value="基隆市">Keelung City</option>

<select id="twzipcode__zipcode--groupby" class="twzipcode twzipcode__zipcode twzipcode__zipcode--groupby">
  <optgroup label="Taipei City">
    <option value="100">Zhongzheng District</option>
    <option value="103">Daton District</option>

<select id="twzipcode__zipcode" class="twzipcode twzipcode__zipcode">
  <option value="100">100 Taipei City / Zhongzheng District</option>
  <option value="103">103 Taipei City / Daton District</option>
          
          

# 事件

demoCallback:{{ demoCallbackValue }}

若 component 的 model-value 改變,會 emit 一個 update:model-value 事件,並以參數方式回傳更新值。


<twzipcode-zipcode id="twzipcode__zipcode"
            @update:model-value="zipcode => demoCallbackValue = zipcode"></twzipcode-zipcode>

<twzipcode-zipcode id="twzipcode__zipcode"
            v-model="zipcode"></twzipcode-zipcode>
          
          

# 依縣市篩選


import { Zipcode, County } from 'twzipcode-vue'

...
  components: {
    TwzipcodeZipcode: Zipcode,
    TwzipcodeCounty: County
  },
  data () {
    return {
      myCounty: '臺中市',
      myZipcode: ''
    }
  }
...
          
        

<twzipcode-county id="twzipcode__county"
          v-model="myCounty"></twzipcode-county>

<twzipcode-zipcode id="twzipcode__zipcode"
           v-model="myZipcode"
           :filter-by-county="myCounty"></twzipcode-zipcode>
          
        

# props與預設值

counties.vue zipcodes.vue zipcodes.groupby.vue 說明
value-locale zh-tw zh-tw zh-tw locales.js
value-template :id :zipcode :zipcode 資料結構
text-locale zh-tw zh-tw zh-tw locales.js
text-template :name :zipcode :county :city :city 資料結構
id twzipcode__county twzipcode__zipcode twzipcode__zipcode--groupby
class twzipcodetwzipcode__county twzipcodetwzipcode__zipcode twzipcodetwzipcode__zipcode
twzipcode__zipcode--groupby
若有指定其他 className ,則會附加在預設值後面。
name county zipcode zipcode
model-value 第一筆資料 第一筆資料 第一筆資料 可使用v-model綁定
若有更動 value 的格式,則需符合更改後格式。
filter-by-county X undefined X 縣市的 id ,初始時要依哪個縣市篩選郵遞區號
如果要設定其他 attribute ,只需要按平常方式即可,例如<twzipcode-county size="10" required></twzipcode-county>
資料來源:twzipcode-data