【问题标题】:How can i add loading in the datepicker vuetify?如何在 datepicker vuetify 中添加加载?
【发布时间】:2020-02-16 00:26:19
【问题描述】:

这样的演示:https://codepen.io/positivethinking639/pen/wvvoMpK?editors=1010

我的 html 是这样的:

<v-dialog
  ref="dialog"
  v-model="modal"
  :return-value.sync="date"
  persistent
  width="290px"
  :loading="loading"
>
  <template v-slot:activator="{ on }">
    <v-btn color="success" dark v-on="on" @click="test">call datepicker</v-btn>
  </template>
  <v-date-picker v-model="date" scrollable>
    <v-spacer></v-spacer>
    <v-btn text color="primary" @click="modal = false">Cancel</v-btn>
    <v-btn text color="primary" @click="$refs.dialog.save(date)">OK</v-btn>
  </v-date-picker>
</v-dialog>

我的js是这样的:

  data: () => ({
    date: new Date().toISOString().substr(0, 10),
    modal: false,
    loading: false
  }),

  methods: {
    test () {
      console.log('test')
      this.loading = true

      setTimeout(() => (this.loading = false), 8000)
    }
  },

我关注这个参考:https://vuetifyjs.com/en/components/cards#loading-card

我尝试这样,但似乎它在 v-dialog 中不起作用

我该如何解决这个问题?

【问题讨论】:

    标签: vue.js datepicker modal-dialog vue-component vuetify.js


    【解决方案1】:

    是的,可以显示正在加载。但是 v-dialog 组件没有明确的这样的属性,我们需要编写一些外部代码。但是 v-card 中有一个加载属性。因此,我将数据选择器包装在 v-card 中。现在它按预期工作了

    这里的工作代码笔: https://codepen.io/chansv/pen/gOOLPqp?editors=1010

    <div id="app">
      <v-app id="inspire">
        <v-row>
          <v-col cols="12" sm="6" md="4">
            <v-dialog
              ref="dialog"
              v-model="modal"
              :return-value.sync="date"
              persistent
              width="290px"
    
            >
              <template v-slot:activator="{ on }">
                <v-btn color="success" dark v-on="on" @click="test">call datepicker</v-btn>
              </template>
              <v-card :loading="loading">
              <v-date-picker v-model="date" scrollable>
                <v-spacer></v-spacer>
                <v-btn text color="primary" @click="modal = false">Cancel</v-btn>
                <v-btn text color="primary" @click="$refs.dialog.save(date)">OK</v-btn>
              </v-date-picker></v-card>
            </v-dialog>
          </v-col>
    
        </v-row>
      </v-app>
    </div>
    
    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data: () => ({
        date: new Date().toISOString().substr(0, 10),
        modal: false,
        loading: false
      }),
    
      methods: {
        test () {
          console.log('test')
          this.loading = true
    
          setTimeout(() => (this.loading = false), 8000)
        }
      },
    })
    

    【讨论】:

    • 太棒了。谢谢。但是,如果它实施到我的项目中,我会遇到问题。似乎ajax并没有停止。或许我们可以通过聊天沟通这个问题
    • 不要在arraw函数内部使用this,保留这个外部arrw函数的值并在var self = this内部使用它; setTimeout(() => (self.loading = false), 2000)
    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 2019-04-14
    • 2023-03-15
    • 2019-06-03
    • 2019-06-10
    • 2020-02-19
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多