Не могу вызвать дочерние оконные функции - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть страница Vue, которая открывает дочернее окно, используя следующую строку:

this.presentation = window.open(
    this.$router.resolve({name:'presentation'}).href,
    'child window',
    'width=auto,height=auto'
);

Это работает как чудо, но теперь мне нужно вызвать его методы.Я пытался получить к ним доступ следующим образом.
Родитель:

this.presentation.setPage(0);

Ребенок:

export default {
  name: 'Presentation',
  data() {
    return {
      page: null
    }
  },
  methods: {
    setPage(_page) {
      this.page = _page;
    }
  }

Это выдает следующую ошибку.

TypeError: "this.presentation.setPage is not a function"

Почему может 'я называю дочерние методы?Как я могу это исправить?

1 Ответ

0 голосов
/ 21 апреля 2019

Сначала, из window.open() документации :

WindowName

... Имя не должно содержать пробелов. ...

Возвращаемое значение:

Объект Window, представляющий вновь созданное окно.

Ваш this.presentation содержит Window объект, не Vue объект. Конечно, у него нет setPage() метода.

Возможно, что-то подобное может сработать (в вашем дочернем компоненте):

{
  mounted() {
    window.setPage = (page) => this.setPage(page);
  }
}
...