Javascript 角度路线无错误但不工作
这很简单,但我不知道怎么了。我有以下示例,使用angular ui router和angular 1.2.16制作一个简单的web模板Javascript 角度路线无错误但不工作,javascript,angularjs,angular-ui,angular-ui-router,Javascript,Angularjs,Angular Ui,Angular Ui Router,这很简单,但我不知道怎么了。我有以下示例,使用angular ui router和angular 1.2.16制作一个简单的web模板 <script type='text/javascript' src='angular.js'></script> <script type='text/javascript' src='angular-ui-router.js'></script> <script type='
<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>
而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>
我的页眉和页脚工作正常。这是很好的第一步。但当我尝试路线时,什么也没发生
在我的控制台中没有任何错误。。我不明白,怎么了?我认为这很简单。也许是因为我是个新手。因此,如果您可以提出解决方案,请提供帮助。状态更改错误通常不会显示在控制台中。您需要添加一个类似这样的错误监听器,以便查看出了什么问题:
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
$dialogs.error("Something went wrong!", error);
console.error("$stateChangeError: ", toState, error);
});
很可能您的模板不在指定的位置或类似位置。我的问题是我的url中的路径不正确: 检查网址<代码>http://example.com/#/未注册,$stateProvider不会告诉您这是错误的 我只需从我的URL中删除“
/#/
”
我想在某个地方添加了一个散列,但我遇到了与OP相同的问题:页眉和页脚都很好,但里面什么都没有
不知道开发人员为什么会这样做,当你进入一个未注册的路径时,它不会给出任何错误或任何不好的事情发生的迹象,但是你去了
如何永久解决此问题:
$stateProvider
覆盖$urlProvider
,因此。否则
将无法工作
添加否则
状态:
/// 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
虽然他的回答没有提供任何路径不正确的迹象,但我能够找到他的答案:
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);
});
})
你能试着换一个吗。这是默认路线,应该用home.html填充。仍然不能使用@rajasaurThanks来更正我的英语。事实上,我的英语不是很好@j、 wittwerTry这个:
把这个代码放在哪里?我找不到任何合适的地方可以使用$rootscope
进行注入…谢谢,这是一个很棒的提示!值得注意的是,$dialogs引用对于那些不使用它的人来说有点混乱。@eposodex:我把我的放在主模块的run()函数中。
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);
});
})