无法调用子窗口功能

时间:2019-04-21 09:13:35

标签: javascript vue.js vuejs2 vue-router

我有这个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 :(得分:0)

首先,从window.open() documentation

  

窗口名称

     

...该名称不应包含空格。 ...

     

返回值:

     

代表新创建的窗口的Window对象。

您的this.presentation包含Window对象,不是 Vue对象。当然,它没有setPage()方法。

也许,这样的事情可能会起作用(在您的子组件中):

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