角度误差,如果不是从头部加载



当我试图从机身底部加载angular时,我总是会得到以下错误:

未能实例化模块xxApp,原因是:[$injector:nomod]

当从头部加载angular时,它可以完美地工作(几乎,见下文),但angular网站建议最好从身体加载它,以确保DOM完全准备好。

HTML

<!DOCTYPE HTML>
<html ng-app="xxApp">
<head>
     <script src="js/jquery-1.11.1.min.js"></script>
     <!-- another bunch of js files that need to be here -->
</head>
<body ng-controller="bodyController">
     <!-- My body -->
     <script src="js/angular.min.js"></script>
     <!-- another bunch of js files that are angular dependant -->
</body>
</html>

JS

var xxApp = angular.module('xxApp', ['ngDb', 'ngAnimate', 'ui.bootstrap']);
xxApp.config(function($interpolateProvider) {
    $interpolateProvider.startSymbol('//');
    $interpolateProvider.endSymbol('//');
});
xxApp.config(function($locationProvider) {
    $locationProvider.html5Mode({enabled: true, requireBase: false});
});
xxApp.controller('bodyController', ['$scope', 'om', '$location', '$document', '$filter', '$q', function($scope, om, $location, $document, $filter, $q) {
$scope.messageBoxVisibility = false;
//...
});

问题是,我怀疑从头部加载angular是我得到的一个随机错误的原因,它导致我的DOM的特定部分始终相同,而不是由angular处理。此部分位于机身底部:

<div id="message-box" ng-show="messageBoxVisibility">
    <a ng-click="messageBoxVisibility = false"></a>
    <div>
        <b>//scopeVar//</b>
    </div>
</div>

scopeVar在控制器的开头设置为false,因此在加载页面时不会显示该消息。但有时,比如说1/10的时间,会显示消息,//scopeVar//按原样可见,ngClick无效。

我使用的是angular 1.4.7。

还有一件事:当从本地服务器加载页面时,我获得了100%的成功,无论angular是从头部还是主体加载的,我从来没有看到消息框。

我认为这是不可能的,对我来说,问题是你的一些文件没有正确加载。。。例如,他们中的某个人返回了一个非200的结果。

尝试打开开发工具,并确保所有javascript文件都返回200(http)状态代码。

只是一个提示,您需要在所有依赖AngularJS的脚本之前加载AngularJS。。。


  1. angularJs1.1角度组件(包括第三部分库)

如果您将jQuery与AngularJS一起使用,那么在AngularJS 之前包含jQuery可能是一件好事

好吧,问题解决了。

该问题来自于在angular之前加载的缩小库。我只需要把它移到后面,然后砰的一声。我不知道为什么它会把angular搞得一团糟,尽管我怀疑它可能来自ajax请求,使lib总是得到404。

我仍然不明白为什么它在从头加载时没有失败,因为订单是一样的。。。

最新更新