我正在使用https://github.com/morganster/ionic-youtube-ng2库来实现离子3中的youtube播放器。
当我们打开主页(我只在主页上使用播放器)时它工作正常,而不是使用navCtrl.push
转到下一页。然后使用后退按钮返回主页。
但是当我使用navCtrl.setRoot
进入下一页并从菜单(抽屉菜单)返回而不是主页没有YouTube播放器时,div当时是空的。
我在this.youtube.player.destroy();
上收到错误
当我回到主页时,我将其更改为this.youtube.destroy();
仍然无效。
我最后在https://github.com/morganster/ionic-youtube-ng2/blob/master/src/pages/home/home.ts
添加了NavController模块的额外代码
gototTest(){
this.navCtrl.setRoot(TestPage);
}
home.html
<button (click)="gotoTest()">Go to Test Page</button>
在页面文件夹中创建了一个带有功能
的TestPage gototHome(){
this.navCtrl.setRoot(HomePage);
}
test.html
<button (click)="gotoHome()">Go to Home Page</button>
我将使用按钮点击测试页面,然后点击gotoHome()按钮返回主页。现在,youtube player div是空的。什么都没玩,没有youtube iframe。
答案 0 :(得分:0)
该代码适用于单页应用程序。这是您可以做的。 (PS:播放器也在页面堆栈中运行,但不在setRoot之后运行)
从app.components.ts中剪切代码 <tbody className="scrollContent">
{
projects.map((project, i) => {
return (
<tr key={i}>
<td>{project.project_name}</td>
<td>{project.description}</td>
<td>
<EditProjectModal project={project} />
</td>
</tr>
);
})
}
</tbody>
... var tag
,并将其粘贴到构造函数下方的yourPage.ts中,这是一个新函数firstScriptTag);
:
ionViewWillEnter()
还要注意ionViewWillEnter(){
let tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
let firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
this.ytPlayer.setupPlayer();
}
中的更改。
就是这样。