美文网首页
Vue城市选择器和日期选择器插件的使用

Vue城市选择器和日期选择器插件的使用

作者: 淮左明都 | 来源:发表于2018-11-02 19:14 被阅读0次

    直接上图:

    1 2 3 4

    需要完成的需求是这个页面的实现:点击“1”跳转到“2”,在页面“2”中可以在“3”中选择你的家乡,在“4”中可以选择你的生日。其中,用到的组件有两个,一个是城市选择器element-china-area-data,另外一个是日期选择器vue-datepicker

    接下来介绍一下这两个选择器的使用,github地址已经在上面标明了,点击组件的名字即可抵达。

    一、城市选择器element-china-area-dat.

    用法比较简单,本次用例是用省市二级联动。

    1. 安装
     npm install element-china-area-data -S
    
    1. import组件所需的数据和对象
     import { provinceAndCityData,CodeToText} from 'element-china-area-data'
    
    1. 直接贴代码吧
    <template>
      <div id="app">
        <el-cascader
          size="large"
          :options="options"
          v-model="selectedOptions"
          @change="handleChange">
        </el-cascader>
      </div>
    </template>
    
    <script>
      import { provinceAndCityData } from 'element-china-area-data'
      export default {
        data () {
          return {
            options: provinceAndCityData,
            selectedOptions: []
          }
        },
    
        methods: {
          handleChange (value) {
            var ctt = CodeToText[value[0]] + CodeToText[value[1]]
            console.log(ctt)
          }
        }
      }
    </script>
    
    1. 属性值
    • provinceAndCityData是省市二级联动数据(不带“全部”选项)
    • provinceAndCityDataPlus是省市二级联动数据(带“全部”选项)
    • regionData是省市区三级联动数据(不带“全部”选项)
    • regionDataPlus是省市区三级联动数据(带“全部”选项)
    • "全部"选项绑定的value是空字符串""
    • CodeToText是个大对象,属性是区域码,属性值是汉字 用法例如:CodeToText['110000']输出北京市
    • TextToCode是个大对象,属性是汉字,属性值是区域码 用法例如:TextToCode['北京市'].code输出110000,TextToCode['北京市']['市辖区'].code输出110100,TextToCode['北京市']['市辖区']['朝阳区'].code输出110105

    这里import进来的属性值中,数据是关键,对象可以操作数据,嗯这样子...看需求做选择

    二、日期选择器vue-datepicker.

    这个比较麻烦,而且官方(github)Demo中也有一些问题。

    1. 安装
    npm install vue-datepicker
    
    1. 使用
    <script>
    // for Vue 1.0
    import myDatepicker from 'vue-datepicker/vue-datepicker-1.vue'
    
    // for Vue 2.0
    // import myDatepicker from 'vue-datepicker'
    import myDatepicker from 'vue-datepicker/vue-datepicker-es6.vue'
    
    export default {
      data () {
        return {
          // for Vue 1.0
          starttime: '',
          endtime: '2018-11-02',
          testTime: '',
          multiTime: '',
    
          // for Vue 2.0
          startTime: {
            time: ''
          },
          endtime: {
            time: ''
          }
    
          option: {
              type: 'day',
              week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
              month: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
              format: 'YYYY-MM-DD',
              placeholder: '请选择日期?',
              inputStyle: {
                'display': 'inline-block',
                'padding': '6px',
                'line-height': '22px',
                'font-size': '16px',
                'border': '2px solid #fff',
                'box-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.2)',
                'border-radius': '2px',
                'color': '#5F5F5F'
              },
              color: {
                header: '#1b98ee',
                headerText: '#fff'
              },
              buttons: {
                ok: '确定',
                cancel: '取消'
              },
              overlayOpacity: 0.5, // 0.5 as default
              dismissible: true // as true as default
            },
            timeoption: {
              type: 'min',
              week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
              month: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
              format: 'YYYY-MM-DD HH:mm'
            },
            multiOption: {
              type: 'multi-day',
              week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
              month: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
              format: 'YYYY-MM-DD HH:mm'
            },
            // limit: [{
            //   type: 'weekday',
            //   available: [1, 2, 3, 4, 5]
            // },
            //   {
            //     type: 'fromto',
            //     from: '2016-02-01',
            //     to: '2016-02-20'
            //   }]
            limit: [{
              type: Array,
              default: function _default () {
                return []
              }
            }]
        }
      },
      components: {
        'date-picker': myDatepicker
      }
    }
    </script>
    <template>
      <div class="card">
    
        <!-- for Vue 1.0 -->
        <div class="row">
          <span>Departure Date:</span>
          <date-picker :time.sync="starttime" :option="option" :limit="limit"></date-picker>
        </div>
    
        <!-- for Vue 2.0 -->
        <div class="row">
          <span>Departure Date:</span>
          <date-picker :date="startTime" :option="option" :limit="limit"></date-picker>
        </div>
    
      </div>
    </template>
    

    这里有两个地方需要注意,在官方的demo中的写法会导致报错:
    1) 在import的时候,需要import Datepicker from 'vue-datepicker/vue-datepicker-es6.vue' 这样引入,不然会少了后面的es6支持。
    2) limit配置那里,需要改成下面这样才能点击选择日期:

    limit: [{
      type: Array,
      default:function _default(){
        return [];
      }
    }]
    

    感谢这位老哥的博客使用vue-datepicker过程中遇到的一些问题
    ,也解决了我的一些问题

    1. API(摘自官网)
    • Option

    • type

      type: 'day' // 'min', 'multi-day'
    
    • format
    format: 'YYYY-MM-DD HH:mm'
    
    • placeholder
    placeholder: 'when?'
    
    • week
     week: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
    
    • month
      month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August','September', 'October', 'November', 'December']
    
    • wrapperClass
    wrapperClass: ''
    
    
    • inputClass
    inputClass: ''
    
    
    • inputStyle
    inputStyle: {
      'display': 'inline-block',
      'padding': '6px',
      'line-height': '22px',
      'font-size': '16px',
      'border': '2px solid #fff',
      'box-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.2)',
      'border-radius': '2px',
      'color': '#5F5F5F'
    }
    
    • color
      color: {
        header: '#ccc',
        headerText: '#f00'
      }
    
    • buttons
    buttons: {
      ok: 'OK',
      cancel: 'Cancel'
    }
    
    • animate
      overlayOpacity: 0.5, // 0.5 as default
      dismissible: true // as true as default
    
    • limit

    • from sometime to sometime(when from/to is empty, days before/after end/start time will be available)

    limit: {
      type:'fromto',
      from:'2016-01-10',
      to:'2016-01-30'
    }
    
    • weekdays
    limit:{
      type: 'weekday',
      available: [1, 2, 3, 4, 5] 
    }
    
    1. prop
    • Vue 1.0
    time: '' // string
    
    <date-picker :time.sync="time" :limit="limit"></date-picker>
    
    • Vue 2.0
    date: {
      time: '' // string
    }
    

    OK,Done!


    相关文章

      网友评论

          本文标题:Vue城市选择器和日期选择器插件的使用

          本文链接:https://www.haomeiwen.com/subject/hdjhzftx.html