AngularJS - 在所有指令呈现后包含<脚本>
AngularJS - Include <script> after all directives have rendered
如果这是一个老问题,请道歉。我花了几个小时寻找答案,但没有运气。
我正在尝试将现有的(主要是jQuery)应用程序转换为使用AngularJS。 我遇到了一个问题,即我包含在索引中的JavaScript文件.html在包含在我的AngularJS应用程序中时运行得太早。即通过使用<script>
标签:
<script type="text/javascript" src="/components/js/theme.js"></script>
这个文件包含很多jQuery,需要呈现页面的其余部分才能产生影响。 那么有没有办法可以包含此脚本并确保仅在页面的其余部分完成加载后加载它? 我在页面上有一组指令,并且在呈现这些指令之前正在加载脚本。
更新:
这是我的索引结构.html:
<!DOCTYPE html>
<html lang="en">
<head>
<title>App Title</title>
<base href="/">
<!-- icons and CSS -->
<link href="/img/ico/favicon.ico" rel="shortcut icon"
type="image/vnd.microsoft.icon">
<link href="/css/bootstrap.min.css" media="screen" rel="stylesheet"
type="text/css">
<!-- External Libraries -->
<script type="text/javascript" src="/external/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="/external/angular/angular.js"></script>
<!-- Angular Components -->
<script type="text/javascript" src="/components/services/ui.js"></script>
<script type="text/javascript"
src="/components/navigation/js/navigation.js"></script>
<!-- App set and config -->
<script type="text/javascript" src="/js/app/app.js"></script>
<script type="text/javascript" src="/js/app/config.js"></script>
<script type="text/javascript" src="/js/app/routes.js"></script>
<!-- endbuild -->
<!-- Precompiled HTML templates -->
<script type="text/javascript" src="/js/templates.module.js"></script>
</head>
<body ng-cloak>
<!-- directive -->
<top-nav-bar></top-nav-bar>
<div class="content">
<div class="container">
<!-- directive -->
<side-nav-bar></side-nav-bar>
<!-- angular view -->
<div ng-view></div>
</div>
</div>
<!-- directive -->
<adysis-footer></adysis-footer>
<!-- Bootstrapper -->
<script src='/js/app.bootstrap.js' type='text/javascript'></script>
<!-- JAVASCRIPT FILE WHICH NEEDS TO RUN AFTER PAGE HAS LOADED! -->
<script type="text/javascript" src="/components/js/theme.js"></script>
</body>
</html>
如您所见,"主题.js"文件是<body>
的最后一项。 我已经在文件中停止以确保它正在加载。 但这总是在页面的其余部分呈现之前完成的。 其他一些JavaScript会干扰令人不安的事情吗? 请注意,我没有包含所有包含的 JavaScript 文件。
更新 2:
我在 JavaScript 函数中添加了更多断点,用于您可以在我的 index.html 中看到的指令。 它们中的每一个在执行主题.js后都会停止。 我不知道为什么会这样,所以我提到这一点,以防它提供更多关于问题的线索。
更新 3:
"theme.js"文件的第一行是:
jQuery(document).ready(function($)
然后该函数包含一长串 jQuery 选择器来设置事件等等。 我的理解是,这一行的重点是等到文档加载完毕。 但是我的设置中的某些东西,例如 Angular,会阻止这种情况发生吗?
我尝试将此行更改为:
angular.element(document).ready(function($)
虽然这确实会导致函数上的内容稍后运行,但它仍然不是在整个文档加载之后。
确保它位于 HTML 正文的末尾,而不是在标题部分。如果它位于 head 部分,它将在页面呈现之前加载。
- 在包含脚本的地方注入HTML
- 如何在开发和生产中动态包含脚本
- "未终止的模板文字“;当文字包含脚本标记时出现语法错误
- AngularJS - 在所有指令呈现后包含<脚本>
- 添加一个包含<脚本>的 dom 元素
- 不能在 AppFog Node App 上包含脚本/css
- 如何在浏览器 JS 控制台中包含脚本时覆盖内容安全策略
- Azure 和 Node.js 和 JSDOM 计划任务 - 打开包含脚本的网页
- 解析包含脚本标记和 document.write 的 HTML 字符串
- 重新加载仅包含脚本的 DIV,然后执行脚本
- jQueryAjax包含脚本,即使页面是空的
- 通过JavaScript在页眉或HTML中动态包含脚本元素
- Firefox扩展在main.js文件中包含脚本
- 如何在document.write中包含脚本
- javascript正则表达式从包含脚本标记的字符串中获取url
- EJS在页面布局的开始/结束处包含脚本
- 将包含脚本的动态字符串插入HTML并动态执行它
- 解决在angular模板中包含脚本标签导致“同步XMLHttpRequest..”的问题;错误感觉很脏
- React "文档未定义;当包含脚本时
- 如何在indesign中要求或包含脚本