我正在使用AngularJS(1.4)构建一个应用程序,我遇到了angular-ui-router的问题。
我有这条路线:
{
name: 'personal_payment',
url: '/:personalLink',
templateUrl: 'personal_payment/personal_payment.html',
data: {
needAuth: false,
noBackground: true
}
}
然后在路由定义的末尾我有这行代码:
states.forEach(function(state) {
$stateProvider.state(state);
});
问题是,现在每个页面如/ login,/ dashboard都被误认为:personalLink参数。使用ngRoute,首先定义/ login路由然后定义/:personalLink就足够了,但是使用angular-ui-router它似乎不起作用,因为/:personalLink路由是数组的最后一个路由。
我错过了什么?
编辑:我注意到只有/ login路由不起作用,其他每个路由的解析顺序都是正确的。我想这条路线有问题!
这是/ login路由定义:
{
name: 'login',
url: '/login',
templateUrl: 'login/login.html',
data: {
needAuth: false,
noBackground: false
}
},
即使控制器为空,路径也不起作用:
'use strict';
angular.module(
'myApp.login', ['ui.router']
).
controller('LoginCtrl', ["$rootScope", function($rootScope) {
}]);
模板如下:
<div class='landing1'>
<div class='landingbox' style='min-height: 386px'>
<div ng-controller="LoginCtrl" class='below-header'>
LOGIN PAGE
</div>
</div>
<div class="stripebadge">
<a href='https://herokuapp.com/privacy' target="_blank" class='light-text font-montserrat' style='font-size: 12px; margin-left: 7px'>Privacy Policy</a>
<a href="mailto:info@paylinko.com?Subject=Paylinko%20Support%20" class='light-text font-montserrat' style='font-size: 12px; margin-left: 22px;'>Contact</a><br>
<img src="assets/images/stripebadge.svg" width="185" align="center" style='margin-top: 10px; margin-bottom: 6px;'><br>
<span class='light_text' style='font-size: 12px;'>
<br>
Copyright © 2016 Paylinko, all rights reserved.</span>
</div>
<div ng-include="'footer_pl.html'"></div>
</div>
其他路线工作正常,我真的不知道这个路线有什么问题。
答案 0 :(得分:0)
第一个参数是名称,所以:
states.forEach(function(state) {
$stateProvider.state(state.name, state);
});
答案 1 :(得分:0)
问题与路线系统没有任何关系。基本上问题是当路由链接(例如:'/ login')与应用程序架构内的物理文件夹匹配时。与包含文件的文件夹相比,所有正在运行的路径都有不同的名称(例如:路径名称为'/ account',但文件夹名称为'setting')。
我在服务器文件中添加了此代码:
app.use('/*', function(req, res, next) {
if (req.baseUrl && (req.baseUrl.match(/\.*\.(js|html|css|jpg|jpeg|png|gif|svg|ttf|woff|woff2|ico|php|xml|txt)\.*/g) )) {
return next();
} else {
res.sendfile('app/index.html');
}
});
现在一切正常。