0

Имеется SPA, основанное на Vue (Vuex).

Есть компонент Login. Внутри форма с двумя полями - email и password - они также прописаны в data(), а у полей формы добавлены v-model. Изменения сохраняются в data().

data: () => ({
  local: {
    form: {
      email: '',
      password: ''
    }
  }
}),

Проблема в том, что если написать этот код:

created: () => {
  console.log(this)
},

То я получаю это в консоли браузера: https://i.stack.imgur.com/2bAFf.png

То есть мне недоступно ни Vuex хранилище, ни Apollo, ни что-либо другое. Даже банальный доступ к data() из кода не могу получить.

Почему так и как это исправить?

Colibri
  • 1,825
  • так this - это ж компонент, он вроде как и вывелся. – Grundy Oct 27 '17 at 12:23
  • @Grundy а как мне получить доступ к Vue и всему что было инициализировано в файле main.js? Просто во всех документациях прописано одно и то же - например, this.$apollo, this.$http и так далее. А я даже доступ к data() получить не могу... – Colibri Oct 27 '17 at 12:27
  • @Grundy Опять же конкретный пример - https://github.com/Akryum/vue-apollo-todos/blob/master/src/components/TodoCreate.vue . На этой странице найдите 54 строку. У меня это не работает... – Colibri Oct 27 '17 at 12:28
  • а ты пробовал этот код? или только в консоль браузера смотрел? – Grundy Oct 27 '17 at 12:30
  • @Grundy да, я пытаюсь отправить мутацию. Безуспешно - undefined. – Colibri Oct 27 '17 at 12:31
  • @Grundy TypeError: undefined is not an object (evaluating '_this.$apollo.mutate') – Colibri Oct 27 '17 at 12:33
  • сделай [mcve] . – Grundy Oct 27 '17 at 12:41

1 Answers1

0

Проблема возникала из-за такого вида методов:

data: () => ({ ... })

Надо было везде писать просто:

data() { ... }

Или

onSubmit() { ... }
Colibri
  • 1,825