我的问题是,当 Angular 在 ng-view 中加载 templateUrl(通过 $routeProvider)时,它也不会评估所有 javascript。我试图弄清楚,但现在我真的很困惑。在我的搜索过程中,我发现了很多新主题,而我已经迷失在其中了。任何想法?
故事
我试图弄清楚之前是否有其他人遇到过这个问题,或者是否有任何解决这个问题的方法。我发现的方式类似于“延迟加载”指令或使用 requirejs,但我不确定这些工具是否真的解决了这个问题。
这就是 jqLite 的工作方式。如果您希望评估模板中的脚本,请在 AngularJS 之前包含 jQuery。如果包含 jQuery,脚本将被评估。尝试删除 jQuery,您会看到最初观察到的行为。
我已经尝试过,包括在 angularjs 之前的 jquery,但根本不会产生任何影响。例如,我读了几个线程
但没有任何解决方案(也许我错过了一件事)。我认为,这甚至不是我的问题。我不想(重新)加载javascript文件,我只想强制评估我的引导程序。
老实说,我现在真的很困惑。之后我第一次遇到 RequireJS。(懒加载,朋友们,再次)
我在 youtube 上看过Thomas Burleson 的视频,我几乎明白它是什么。而且我查看了更多有关主题的文章(因为我发现它很有趣),但解决方案应该在其他地方。
这是情况
当我在我的 angularjs 应用程序上工作时,我将一个部分站点创建为单独的 .html 文件(以防万一),它看起来很漂亮。然后我将这个 .html 文件切成小块(页眉、顶部菜单、内容、页脚),并在部分 urlTemplate 中使用它的主体标签作为 div。
<body ng-app="myApp" id="page-top">
<div class="wrapper">
<div class="navigation">
<div top-menu></div>
</div>
<div ng-view></div>
<footer id="page-footer">
<div class="container">
<span>Copyright © 2014. All Rights Reserved.</span>
<span class="pull-right"><a href="#page-top" class="roll">Go to top</a></span>
</div>
</footer>
</div>
</body>
角度 $routeprovider:
angular.module('myApp').config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'main/templates/main.html'
}).when('/ad-element', {
templateUrl: 'submit/templates/submit.html'
}).when('/404', {
templateUrl: 'errors/templates/404.html'
}).otherwise({
redirectTo: '/404'
});
}]);
提交.html
<div class="page-sub-page page-submit">
<div ng-controller="SubmitController" class="container">
<form ...></form>
</div>
</div>
每个角度功能都在工作,唯一可见的区别是外观。
这是一个很好的:
这是不好的: