美文网首页vue开发
vue中使用vux datetime,数据绑定不上

vue中使用vux datetime,数据绑定不上

作者: YZY君 | 来源:发表于2018-08-08 10:19 被阅读13次

出于一个功能上的需求,需要给datetime组件一个初始值,通过v-model绑定了数据,,然而datetime里还是空的。


datetime数据没更新

解决办法,刷新组件,通过v-if来创建新的组件


通过v-if刷新组件 通过v-if刷新组件 实现效果

原理

Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。
$nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM,API 文档中官方示例如下:

new Vue({
  // ...
  methods: {
    // ...
    example: function () {
      // modify data
      this.message = 'changed'
      // DOM is not updated yet
      this.$nextTick(function () {
        // DOM is now updated
        // `this` is bound to the current instance
        this.doSomethingElse()
      })
    }
  }
})

示例代码 hello-world.vue

<template>
  <div>
    <div class="info">
      <group>
        <datetime title="预约日期" v-model="appointment" format="YYYY-MM-DD" required v-if="hackReset"></datetime>
      </group>
    </div>
    <div class="subscribe">
      <x-button type="primary" @click.native="submit">提交预约</x-button>
    </div>
  </div>
</template>

<script>
import { Group, Cell, XButton, XInput, Datetime } from 'vux'
import { getStore, setStore, removeStore } from '@/config/mUtils'
import { setTimeout } from 'timers'

export default {
  components: {
    Group,
    Cell,
    XButton,
    XInput,
    Datetime
  },
  name: 'subscribe',
  data () {
    return {
      appointment: '',
      token: '',
      hackReset: true
    }
  },
  created () {
    document.title = '填写预约信息'
    this.token = getStore('accessToken')
  },
  mounted () {
    this.getTmpImput()
  },
  methods: {
    getTmpImput () {
      if(getStore('tmpImput')) {
        const tmpImput = JSON.parse(getStore('tmpImput'))
        console.log(tmpImput)
        this.appointment = tmpImput.appointment
        console.log('appointment',this.appointment)
        this.hackReset = false
        this.$nextTick(() => {
          this.hackReset = true
        })
        removeStore('tmpImput')
      }
    }
    submit () {
     //提交处理
    },
    valdtPhone (numb) {
      return /^(1[3-9]\d{9})$/.test(numb)
    },
    toastMsg (msg) {
      this.$vux.toast.show({
        type: 'text',
        text: msg,
        position: 'middle'
      })
    }
  }
}
</script>

<style lang="scss" scoped>
.info {
  margin-top: 0.5rem;
}
.subscribe {
  margin-top: 0.5rem;
  padding: 0.75rem;
}
</style>

参考:

vue中使用element DateTimePicker,数据绑定不上
理解 $nextTick 的作用

相关文章

  • vue中使用vux datetime,数据绑定不上

    出于一个功能上的需求,需要给datetime组件一个初始值,通过v-model绑定了数据,,然而datetime里...

  • vue双向数据绑定vuex中的state

    vue双向数据绑定vuex中的state 在vue中, 不允许直接绑定vuex的值到组件中, 若是直接使用, 则会...

  • vue中的虚拟dom和双向数据绑定的结合。

    vue中的虚拟dom和双向数据绑定的结合。vue1.0中使用Object.defineProperty了双向数据绑...

  • 数据绑定

    Vue中数据绑定方式有两种:单向绑定和双向绑定 单向绑定(v-bind) 数据只能从data流向页面使用:v-bi...

  • Vue来一点料

    一、Vue-cli构建的项目目录 二、Vue双向数据绑定 原理 Vue遍历data对象中的所有数据,使用Objec...

  • vue简介

    1.vue特性 vue框架有两个特性 数据驱动视图 双向数据绑定 1.1 数据驱动视图 在使用vue的页面中,vu...

  • Vue总结1-基本使用和指令

    1.什么是vue,为什么要使用vue,vue的优势 2.vue基本模板 3.数据单向绑定 4.数据双向绑定 5.常...

  • 杂题

    vue中双向绑定是如何实现的? vue是使用Object.defineProperty()来实现数据劫持的,它可以...

  • 如何用js手动实现一个数据双向绑定

    双向数据绑定: 我们这里拿vue举例,vue中的双向数据绑定主要是利用Object.defineProperty(...

  • Vue快速入门(二:数据绑定)《快乐Vue》

    数据绑定 数据绑定语法 主要介绍 Vue.js 的数据绑定语法.使用的是双大括号标签 {{}},为“Mustach...

网友评论

    本文标题:vue中使用vux datetime,数据绑定不上

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