我是Angular的新手,所以我仍然不知道它是如何运作的。我偶然发现了一个问题(很早就......),下面的代码在控制台中给了我“Uncaught Object”并打破了Angular。 .config部分是罪魁祸首,如果我删除它,页面加载正常。我不完全确定错误是如何引起的,因为对我而言,一切看起来都不错?
var app = angular.module('app', ['ngRoute'])
.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider
.when('/dashboard', {
templateUrl: '/app/views/admin.html',
controller: 'DashboardController'
})
.otherwise('/', {
redirectTo: '/'
})
$locationProvider.html5mode(true);
}])
.controller('DashboardController', ['$scope', function ($scope, Security) {
$scope.security = Security;
}])
答案 0 :(得分:30)
我有同样的错误;如果您激活Chrome以暂停例外,您将能够获得更详细的错误信息
答案 1 :(得分:6)
.otherwise
只接受一个参数 - 一个对象,其中包含有关未定义的路由需要执行的操作的信息。
在您的情况下,除了对象之外,您似乎还在向其传递路径。
替换:
.otherwise('/', {
redirectTo: '/'
})
与
.otherwise({
redirectTo: '/dashboard'
});
请注意,您需要重定向到存在的路径。 '/'是不存在的路径。 '/ dashboard'是一个路径,因此您重定向到它。或者,为'/'路径
定义处理程序答案 2 :(得分:1)
我发布了我自己的自己的解决方案,因为这个问题背后似乎有几个因素,到目前为止还没有人谈过这个问题。
也就是说,尝试在$.ready()
;
<script>
$(function(){
// This leaves "Uncaught object" error in Chrome!
// var app = angular.module('testApp', ['ngRoute']);
});
// So get it out of $.ready()!!
var app = angular.module('testApp', ['ngRoute']);
</script>
答案 3 :(得分:1)
在这种情况下,看起来错误是由此引起的:
$locationProvider.html5mode(true); <-- mode should be capital 'M'.
答案 4 :(得分:0)
确保在HTML文件中的angular-route.js之前加载angular.js。 像:
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.16/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.16/angular-route.js"></script>
答案 5 :(得分:0)
我刚碰到这个,在我的情况下,这是由于使用了UI-Router并且具有重复的州名。