如果没有从头部加载角度误差

时间:2015-10-31 20:51:59

标签: javascript angularjs

当我尝试从身体底部加载角度时,我总是会收到以下错误:

由于以下原因无法实例化模块xxApp:[$ injector:nomod]

当角度从头部加载时,它可以完美地工作(几乎,见下图),但有角度的网站建议最好从身体加载它以确保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;
//...
});

问题是,我怀疑从头部加载角度是我得到的随机错误的原因,这会导致我的DOM的特定部分始终相同,不会被角度处理。这部分位于身体的底部:

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

scopeVar在控制器的开头设置为false,因此页面加载时不显示消息。但有时候,假设有1/10的时间显示消息,// scopVar //可见,并且ngClick无效。

我正在使用角度1.4.7。

还有一件事:当从本地服务器加载页面时,我获得了100%的成功,从头部或身体加载了角度,我从未看到消息框。

2 个答案:

答案 0 :(得分:0)

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

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

请注意, 您需要在依赖于AngularJS ...

的所有脚本之前加载AngularJS
  1. angularJs 1.1角度组件(包括第3部分库)
  2. 如果你在AngularJS中使用jQuery可能是一件好事,包括在AngularJS之前的jQuery

答案 1 :(得分:0)

嗯,问题解决了。

问题来自于在角度之前加载的缩小的lib。我只需要移动它并繁荣。我不知道为什么它使角度全部搞砸了,虽然我怀疑它可能来自ajax请求使得lib总是得到404.

我仍然不明白为什么从头部加载时它没有失败因为订单是相同的但是......