我试图使用angular的$ locationProvider.html5mode()删除URL中的"#",但由于某种原因,它总是抛出一个错误,即html5mode未定义.我尝试在控制台中记录$ locationProvider以检查其属性并且存在html5mode但是当我尝试调用它时,它会抛出一个未定义的错误.有没有人以前经历过这种情况,并且不介意对我所缺少的内容有所了解.提前致谢.
var app = angular.module('app', ['appControllers', 'ngRoute']);
app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$locationProvider.html5mode(true);
$routeProvider
.when('/', {
templateUrl: 'partials/home.html',
controller: 'PageController'
})
.when('/app', {
templateUrl: 'partials/app.html',
controller: 'PageController'
});
}]);
Run Code Online (Sandbox Code Playgroud) 我在AngularJS应用程序中有几条路线,我正在使用UI-Router在我的站点中的状态/页面之间进行路由.我遇到的一个问题是我有相互冲突的路由,因为我对网站主页有/可选参数.
我有一个主页(example.com
)的路由或多或少定义如下:
$stateProvider
.state('home', {
url: '/:filter',
params: {
filter: { squash: true, value: null }
}
});
Run Code Online (Sandbox Code Playgroud)
我可以通过转到主页(example.com
),以及添加example.com/apples
用于过滤主页上内容的可选参数来激活此状态.
我现在的问题是,我有一个定义的其他途径/login
,/about
,/help
并通过进入example.com/login
或example.com/help
,只会激活home
因为状态/:filter
我已经定义了可选的占位符参数,它捕获后的任何途径/
.
我尝试过的解决方法是在我的其他路由定义和链接中添加一个尾部斜杠url: /login/
并激活:example.com/login/
这有效但我无法使用UI路由器的ui-sref
指令通过名称而不是我的应用程序中的URL来引用我的状态尾随斜线看起来很丑陋.
我试图做到的,是要能够对网页的可选参数/:filter
,仍然能够去我的其他途径/login
,/register
等等.而不必通过添加结尾的斜杠要解决它.
之前有没有人处于这种或类似的情况?任何见解或建议都非常感谢.提前致谢.