@Rufix

Как связать данные, полученные из store?

Привет, передо мной такая задача: делаю страницу с настройками профиля.
Есть блока "Profile settings" в котором инпуты, для примера возьмем поля "First name" и "Last name".
В store у меня хранится объект, в котором вся нужная мне информация об авторизованном пользователе.
Мне нужно взять из store эту информацию, создать в data соответствующие поля, например firstName и lastName для привязки с инпутами.
Сложность заключается в том, чтобы отобразить текущие данные пользователя в этих полях, при этом сделать привязку.

Что я имею:
- получаю currentUser() в computed свойствах путем обращение к this.$store.getters.getCurrentUser
- объект data, в котором созданы 2 поля: firstName: "" и lastName: ""
- 2 инпута с v-model="firstName" и "lastName" соответственно

Пытался в data задать значение this.currentUser.first_name из computed, но к вычисляемым свойствам мы не имеем доступа из data.
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 3
Nolis
@Nolis
it-гопник
используй get и set в computed св-ве.
я думаю это будет то, что тебе нужно
computed: {
  fullName: {
    // геттер:
    get: function () {
      return this.firstName + ' ' + this.lastName
    },
    // сеттер:
    set: function (newValue) {
      var names = newValue.split(' ')
      this.firstName = names[0]
      this.lastName = names[names.length - 1]
    }
  }
}
Ответ написан
Комментировать
Gimir
@Gimir
JavaScript dev
Пропиши присвоение в mounted(), и все будет нормально
Ответ написан
yarkov
@yarkov Куратор тега Vue.js
Помог ответ? Отметь решением.
mounted() {
    this.userName = this.currentUser.userName;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы