这很简单,但我不知道什么是错的。我有以下示例,使用角度ui-router和角度1.2.16制作一个简单的Web模板。
<script type='text/javascript' src='angular.js'></script>
<script type='text/javascript' src='angular-ui-router.js'></script>
<script type='text/javascript' src='js/me/app.js'></script>
我已经写了app.js和index.html这样的东西
app.js
angular.module('app',[
'ui.router'
])
.config(['$urlRouterProvider','$stateProvider'],function($urlRouterProvider,$stateProvider){
$urlRouterProvider.otherwise('/');
//console.log($urlRouterProvider);
$stateProvider
.state('home',{
url:'/',
templateUrl:'home.html'
})
})
并且index.html是
<body ng-app="app">
<header ng-include="'header.html'"></header>
<!-- End of Header -->
<div ui-view="''"></div>
<footer ng-include="'footer.html'"></footer></body>
我的页眉和页脚正常工作。这是一个很好的第一步。但是当我尝试路线时,没有任何反应。
在我的控制台中根本没有错误..我不明白,这是什么问题?我认为这很简单。也许是因为我对角度很新。因此,如果您可以提供解决方案,请提供帮助。
答案 0 :(得分:7)
状态更改错误通常不会显示在控制台中。您需要添加一个错误监听器,以便查看出现了什么问题:
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
$dialogs.error("Something went wrong!", error);
console.error("$stateChangeError: ", toState, error);
});
您的模板很可能不在您指定的位置或类似的位置。
答案 1 :(得分:0)
我的问题在我的网址中是一条糟糕的道路:
检查网址!
http://example.com/#/
未注册且$ stateProvider不会告诉您它的错误。我只需从我的网址中删除&#34;
/#/
&#34; 。
我想在某个地方添加了一个哈希,但是我遇到了与OP相同的问题:页眉和页脚很好,但<ui-view></ui-view>
不知道为什么开发人员会这样做,以便当你进入未注册的路径时,它不会出现任何错误或任何形式的错误,但是你去了......
$stateProvider
会覆盖$urlProvider
,因此.otherwise
无法正常工作。
添加otherwise
州:
/// OP's code ///
$stateProvider
.state('home',{
url:'/',
templateUrl:'home.html'
})
// Just add a new state
.state('otherwise',{
url:'*path', // uses regex, and doesn't mess up preceding state urls
templateUrl: 'home.html' // sends the user back home if a bad url happens
})
$rootScope
虽然@GlenFilson的答案没有提供任何迹象表明路径不正确,但我能够找出 他的答案应该去哪里:
var app = angular.module(...); // can't inject $rootScope here except through providers (e.g., $httpProvider)
app.config(...); // nor here
// define app.run() after configuration
app.run(function($rootScope){
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
$dialogs.error("Something went wrong!", error);
console.error("$stateChangeError: ", toState, error);
});
})