如何在我的应用程序的所有模块中应用$ urlRouterProvider.rule

时间:2014-10-24 15:28:51

标签: angularjs angularjs-routing

我想使尾随斜杠可选。我找到了一个很好的解决方案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;
            }
        }).
}).

0 个答案:

没有答案