我有这个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"
为什么我不能调用子方法?我该如何解决?
答案 0 :(得分:0)
首先,从window.open()
documentation:
窗口名称
...该名称不应包含空格。 ...
返回值:
代表新创建的窗口的Window对象。
您的this.presentation
包含Window
对象,不是 Vue
对象。当然,它没有setPage()
方法。
也许,这样的事情可能会起作用(在您的子组件中):
{
mounted() {
window.setPage = (page) => this.setPage(page);
}
}