2014-05-24 33 views
7

我是Angular的新手,所以我仍然对自己的工作方式感到满意。然而,我偶然发现了一个问题(相当早...),下面的代码在控制台中给我“未捕获的对象”并打破了Angular。 .config部分是罪魁祸首,如果我删除它,页面加载正常。我不完全确定错误是如何造成的,因为对我来说,一切看起来都很好?Angular Uncaught Object

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

什么是你正在注入'Security'对象? –

+1

你的HTMl是什么样的?你是否包含Angular的routeProvider js文件? –

+0

@TylerMcGinnis是包含文件ref,并且我已经用alert()预先编写了路由脚本,以确保它被抓取。 – leaksterrr

回答

6

.otherwise只需要一个参数 - 它包含了需求没有定义的路由做什么信息的对象。

就你而言,除了一个对象之外,你似乎正在向它传递一个路由。

替换:

.otherwise('/', { 
    redirectTo: '/' 
}) 

.otherwise({ 
    redirectTo: '/dashboard' 
}); 

请注意,您需要重定向到一个真实存在的路径。 '/'是不存在的路径。 '/ dashboard'是一个路径,因此您重定向到它。或者,为'/'路径定义处理程序

+0

我仍然收到错误:( – leaksterrr

+0

@leaksterrr你能否粘贴整个错误? – callmekatootie

+0

http://cl.ly/image/453b0m202B35 – leaksterrr

0

确保您的angular.js在您的HTML文件中的angular-route.js之前加载。 like:

<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> 
30

我有同样的错误;如果激活Chrome浏览器停留在异常,你就可以有更详细的错误信息 angular uncaught object

+2

这是救星。我从来没有使用暂停例外,但总是设置断点。 –

+0

+1用于“暂停例外”和有用的屏幕图像。 –

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> 
0

我刚刚遇到了这个,在我的情况下,这是由于使用UI-Router并具有重复的状态名称。

1

在这种情况下,它看起来像错误已经造成这样的:

$locationProvider.html5mode(true); <-- mode should be capital 'M'. 
+0

谢谢,我的错字是:'$ locationProvider.html5Moode(true);'我正在寻找小时...... – Thomas

相关问题