【问题标题】:Script not loading when redirecting to a view in AngularJS重定向到AngularJS中的视图时脚本未加载
【发布时间】:2015-05-23 13:06:56
【问题描述】:

我是 AngularJS 的新手,我有一个应用程序,我正在使用 AngularJS 在弹出窗口中播放 youtube 视频。

问题在于,每当使用 F5 加载页面或从浏览器“重新加载”时,加载 youtube 播放器的相关脚本工作正常,但每当我从应用程序的任何位置导航到该页面时,该脚本不会工作。

<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
  player = new YT.Player('ytplayer', {
  videoId: 'iSCIesIM8Ww'
});
}
 </script>

这是我每次查看页面时要加载的脚本。

此外,我已在我的部分视图文件之一中编写了此脚本。

我也使用了指令,但也没有解决问题。

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。请不要在标题中大喊大叫;你可能认为它吸引了注意力,它确实吸引了注意力——但只是注意力不集中。
  • 例子:我来这里只是为了要求你不要在标题中大喊大叫。

标签: javascript angularjs angularjs-directive youtube-api


【解决方案1】:

请在部分视图的元素上创建一个指令,并将您的视频 javascript 包含在您的指令中。它将完美地融入其中。

【讨论】:

  • 感谢您回复 Mahendra Tyagi。是的,我也试过了。你能不能给我一个例子,让我知道我没有做错什么。
【解决方案2】:

脚本在初始运行后不会触发任何内容。
这是因为 AngularJS 应用程序是“单页”应用程序,并且在应用程序内部导航不会触发整页刷新(按设计)。这就是为什么 Angular 路由出现在井号之后的原因
http://localhost:9000/#/myRoute
你把你的指令放在哪里?每次呈现指令时,指令 JS 都会触发。如果指令代码没有再次运行,那是因为它没有被重新渲染。

【讨论】:

  • 我将指令放在一个单独的 JS 文件中,称为 app.js。我还能做什么?
  • app.js 是您定义指令的地方。它在您的 HTML 中的什么位置?例如:&lt;my-directive-name&gt;&lt;/my-directive-name&gt; 这将决定你的指令被渲染的次数/次数。
  • 哦,在这种情况下,我将指令放在部分视图文件“main.html”之一中
猜你喜欢
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-29
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多