Vuex商店自动更新

时间:2017-06-08 07:59:21

标签: vue.js store vuejs2 vue-router vuex

我的Vuex商店获得automatically updated,而不会立即getters拨打任何committingmutation任何router change

在保存表单之前,我没有对VUEX进行更改,因此这意味着数据绑定到VUEX的两个方向。我觉得这是不可能的。在这种情况下,不需要,因为如果用户更改某些数据,然后导航离开而不实际点击"保存",数据是VUEX仍然更改

1 个答案:

答案 0 :(得分:4)

<template>
  <h1>{{userName}}</h1>
  <input type="text" v-model="name.selected" :placeholder="user.username" @keyup.enter="Confirm"/>
</template>

<script>
  import { mapGetters } from 'vuex'
  import { updateUserData } from 'mesh-shared/api/'
  export default {
    name: 'PreferenceProfile',
    data() {
      return {
        name: {
          isActive: false,
          selected: '',
          onChange: false
        }
      }
    },
    computed: {
      ...mapGetters([
        'user',
        'preference'
      ]),
      userName() {
        if (this.name.selected !== '') {
          return this.name.selected
        } else {
          return this.user.username
        }
      }
    },
    methods: {
      toggleNameRider() {
        this.name.isActive = true
      },
      async Confirm() {
        const params = {
          userId: this.user.userId,
          accessToken: this.user.auth.accessToken,
          avatar: (this.avatar.uploadData.url) ? this.avatar.uploadData.url : this.user.avatar,
          username: this.userName
        }
        const data = await updateUserData(params)
        console.log(data)
        const user = Object.assign(this.user, {
          completed: true
        }, data.data.user)
        this.cancel()
      },
      cancel() {
        this.avatar.newUrl = ''
        this.name.selected = ''
        this.name.isActive = false
      }
    }
  }
</script>

我建议你做这样的事情。正如我从你的问题中所理解的那样,你将v-model设置为getter。 而不是这样做检查下面的例子。我希望它可以提供帮助。