Kyl*_*yle 73 javascript angularjs gruntjs
我有一个yeoman脚手架应用程序(角度fullstack生成器).
grunt serve
工作正常,但grunt build
产生一个锁定内存的分布,很可能是因为角度的圆形引用.
我将角度升级为1.2.15
.我得到的错误是:
WARNING: Tried to Load Angular More Than Once
在升级之前,错误是:
Error: 10 $digest() iterations reached. Aborting!
调试非常困难,因为它只在构建/缩小后才会发生.我的所有模块都采用角度阵列格式,因此缩小DI应该不是问题,但确实如此.
没有一个脚本可以导致这种情况.它消失的唯一方法是我不用我的app.js文件初始化.我的app.js文件如下.
想到任何事情?
'use strict';
angular.module('myApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'ngTagsInput',
'ui.bootstrap',
'google-maps',
'firebase'
]);
angular.module('myApp').config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/listing.html',
controller: 'ListingCtrl'
})
.otherwise({
redirectTo: '/'
});
}]).constant('FIREBASE_URL', 'something');
Run Code Online (Sandbox Code Playgroud)
Kyl*_*yle 143
这可能是一些问题:基本上它是routeProvider没有找到文件并递归加载默认值的问题.
对我而言,事实证明,这不是缩小,而是导致问题的js的连接.
angular.module('myApp').config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/listing.html',
controller: 'ListingCtrl'
})
.otherwise({
redirectTo: '/'
});
}]).constant('FIREBASE_URL', 'something');
Run Code Online (Sandbox Code Playgroud)
您会注意到,如果应用程序找不到文件(即otherwise
),那么它将重定向到根目录,在这种情况下会加载templateUrl
.但如果你templateUrl
的错误,那么它将导致一个递归,重复index.html
加载角度(和其他一切)反复.
就我而言,grunt-concat在构建之后导致templateUrl出错,但之前没有.
gra*_*ant 16
当$ templateCacheProvider尝试解析templateCache中的模板或通过不存在的项目目录时,可能会发生此问题
例:
templateUrl: 'views/wrongPathToTemplate'
Run Code Online (Sandbox Code Playgroud)
应该:
templateUrl: 'views/home.html'
Run Code Online (Sandbox Code Playgroud)
Chr*_*ese 14
似乎没有人在任何地方提到过这个,所以这就是触发它的原因:我的身体上有ng-view指令.像这样改变它
<body layout="column">
<div ng-view></div>
...
</body>
Run Code Online (Sandbox Code Playgroud)
停止了错误.
Som*_*ens 13
这根本没有任何关系app.js
.相反,当您多次包含Angular JS库时,会记录此警告.
我设法重现了这个JSBin中的错误.请注意两个脚本标记(两个不同的版本):
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
GitHub上的相关角度代码.
我有同样的问题,问题是JQuery和Angular之间的冲突.Angular无法为自己设置完整的JQuery库.由于JQLite在大多数情况下已经足够了,我首先在我的网页中包含了Angular,然后我加载了Jquery.错误消失了.
在我的情况下,我在页面上使用jquery和angular js时遇到此错误.
<script src="http://code.jquery.com/jquery-2.1.3.min.js" type="text/javascript"></script>
<script src="js/angular.js" type="text/javascript"></script>
<script src="js/angular-route.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
我删除了 :
<script src="http://code.jquery.com/jquery-2.1.3.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
警告消失了.
我也面临这样一个问题,我不断得到一个无限循环,页面无限重新加载.经过一些调试后我发现错误是由于,因为该文件不存在于该文件中,因此,angular 无法加载给定的特定ID模板.
小心你在角度应用程序中给出的url.如果它不正确,角度最终可以继续寻找它,导致无限循环!
希望这可以帮助!
今天遇到这个问题并想通知我会如何修复它.在我的情况下,我有一个index.html页面:
<body ng-app="myApp" ng-controller="mainController"
<div ng-view></div>
</body>
Run Code Online (Sandbox Code Playgroud)
在我的app.js文件中,我有以下代码:
$routeProvider.when('/', {
controller : 'mainController',
templateUrl : 'index.html',
title : 'Home'
}).when('/other', {
controller : 'otherController',
templateUrl : 'views/other.html',
title : 'other'
}).otherwise({
redirectTo : '/'
});
Run Code Online (Sandbox Code Playgroud)
结果,当我进入页面(base_url /)时,它加载了index.html,并在ng-view中再次加载了index.html,并在该视图中再次加载了index.html ...依此类推 - 创建index.html的无限递归加载(每次加载角度库).
要解决所有我必须做的就是从routProvider中删除index.html - 如下所示:
$routeProvider.when('/other', {
controller : 'otherController',
templateUrl : 'views/other.html',
title : 'other'
}).otherwise({
redirectTo : '/'
});
Run Code Online (Sandbox Code Playgroud)