我想使尾随斜杠可选。我找到了一个很好的解决方案here,但我的angularjs应用程序有很多模块,我只能让它在每个模块中复制和粘贴代码。
所以,我的问题是:是否可以将全局$urlRouteProvider.rule
应用于我的所有模块?
这是我的app.js文件的一部分:
angular.module('datasid', [ 'ngResource', 'ui.router',
'datasid.attendance.search',
'datasid.maps', ...]).
config(function($stateProvider, $httpProvider, $urlRouterProvider) {
$stateProvider.
state('home', {
url: '',
templateUrl: 'partials/home.html',
section: 'home'
});
// Allow trailing slash optional for all routes
$urlRouterProvider.rule(function ($injector, $location) {
var path = $location.url();
// check to see if the path has a trailing slash
if ('/' === path[path.length - 1]) {
return path.replace(/\/$/, '');
}
if (path.indexOf('/?') > 0) {
return path.replace('/?', '?');
}
return path;
});
}).
这是我的maps.js文件的一部分,其中包含datasid.maps模块:
angular.module('datasid.maps', []).
config(function($stateProvider, $httpProvider) {
// Allow trailing slash optional for all routes
$urlRouterProvider.rule(function ($injector, $location) {
var path = $location.url();
// check to see if the path has a trailing slash
if ('/' === path[path.length - 1]) {
return path.replace(/\/$/, '');
}
if (path.indexOf('/?') > 0) {
return path.replace('/?', '?');
}
return path;
});
$stateProvider.
state('maps', {
url: '/maps',
templateUrl: 'partials/maps.html',
controller: 'MapsCtrl',
section: 'maps',
label: "Mapas"
}).
state('maps.region', {
url: '/:region',
section: 'maps',
label: function (params) {
return params.region;
}
}).
}).