【问题标题】:How to get default value from component vue.js?如何从组件 vue.js 获取默认值?
【发布时间】:2018-05-08 13:43:45
【问题描述】:

我有这个组件:

<template>
    <div>
        <label class="col-form-label">
            <span>From</span>
        </label>
      <DatepickerFrom v-on:selected="SetSelectedDateFrom" :value="config.state.fromDate" :disabled="config.disabledFrom"></DatepickerFrom>
    </div>
</template>

<script>
import DatepickerFrom from 'vuejs-datepicker'
const dUse = new Date()
export default {
  data() {
    return {
      config: {
        disabledFrom: {
          to: new Date(dUse.getFullYear() - 1, dUse.getMonth(), dUse.getDate()),
          from: new Date(dUse.getFullYear(), dUse.getMonth(), dUse.getDate())
        },
        state: {
          fromDate: new Date(
            dUse.getFullYear(),
            dUse.getMonth(),
            dUse.getDate() - 1
          ).toString()
        }
      }
    }
  },

  methods: {
    SetSelectedDateFrom: function(selectedDate) {
      this.$emit('selected', selectedDate)
    }
  },
  components: {
    DatepickerFrom
  }
}
</script> 

注意这部分:

:value="config.state.fromDate"

我加载了这个组件:

  <div class="card selector col-md-4 holder">
    <pickerTo v-on:selected="DateSelector2" ></pickerTo>    
  </div>

import pickerTo from '../components/DateFilterTo'

我有一个函数可以在发生更改后获取所选值:

DateSelector2: function(date) {
  FromDate = date
}

一旦选择了新日期,我会将其分配给我父母内部的一个全局变量。

问题

我在组件中设置了一个默认日期,当我向服务器发出请求时,我想获得该日期。我无法弄清楚如何获取此默认值,因为它不会发生在更改事件中。

我是 vue 新手。

【问题讨论】:

    标签: javascript vue.js vue-component


    【解决方案1】:

    最简单的方法之一是在mounted 函数触发时发出默认值。

    mounted () {
        this.$emit('selected', config.state.fromDate)
    }
    

    除此之外,我会将值更改为 prop 并稍微更改它以使其与 v-model 一起使用,以便使用它选择派生该值的任何方法从父级传递默认值。

    编辑:

    这是我将如何重构它以使用道具。

    <template>
      <div>
        <label class="col-form-label">
          <span>From</span>
        </label>
        <DatepickerFrom v-on:selected="SetSelectedDateFrom" :value="value" :disabled="config.disabledFrom"></DatepickerFrom>
      </div>
    </template>
    
    <script>
    import DatepickerFrom from 'vuejs-datepicker'
    const dUse = new Date()
    export default {
      props: {
        value: {
          type: String,
          required: true
        }
      },
      data() {
        return {
          config: {
            disabledFrom: {
              to: new Date(dUse.getFullYear() - 1, dUse.getMonth(), dUse.getDate()),
              from: new Date(dUse.getFullYear(), dUse.getMonth(), dUse.getDate())
            },
            state: {
            }
          }
        }
      },
    
      methods: {
        SetSelectedDateFrom: function(selectedDate) {
          this.$emit('input', selectedDate)
        }
      },
      components: {
        DatepickerFrom
      }
    }
    </script> 
    

    现在您可以将组件与 v-model 指令一起用于 2 路绑定

    <component v-model="dateFrom"></component>
    
    ...
    
    data () {
      return {
        dateFrom: new Date(
          dUse.getFullYear(),
          dUse.getMonth(),
          dUse.getDate() - 1
        ).toString()
      }
    }
    

    【讨论】:

    • 我试图用道具解决这个问题,但无法弄清楚如何正确地做到这一点。如果可以的话,将不胜感激
    • 谢谢@贾斯汀麦克阿瑟
    猜你喜欢
    • 2020-07-31
    • 1970-01-01
    • 2018-05-06
    • 2019-06-05
    • 2010-11-28
    • 2023-03-29
    • 2020-02-08
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多