对AngularJS 1.5.9的更新打破了Angular Route

时间:2016-12-19 19:11:51

标签: angularjs

我有一个Angular应用程序,我最近必须更新到1.5.9。

在我的应用中,有人需要获取网址(例如:http://somedomain/#/dashboard/1)并可以直接访问该屏幕,这很常见。

在最新版本中,这种方法运行良好,但现在1.5.9角度始终将此请求重定向到根路径(http://somedomain/#/),导致所有链接都被破坏。

我该如何解决这个问题?这是一些新规则,还是这个版本的错误,还是我必须改变的一些配置?

---更新---

我的路由器代码有点混乱,因为我有几个模块,每个模块定义一个这样的对象:

portal._routes = {
    '/': {
        controller: 'HomeController',
        controllerUrl: 'portal/layout/controller/home',
        templateUrl: 'app/portal/layout/template/home.html'
    },
    '/application': {
        controller: 'HomeController',
        controllerUrl: 'portal/layout/controller/home',
        templateUrl: 'app/portal/layout/template/home.html'
    },
    '/dashboard': {
        controller: 'DashboardListController',
        controllerUrl: 'portal/dashboard/controller/dashboard-list',
        templateUrl: 'app/portal/dashboard/template/dashboard-list.html'
    },
    '/dashboard/new': {
        controller: 'DashboardFormController',
        controllerUrl: 'portal/dashboard/controller/dashboard-form',
        templateUrl: 'app/portal/dashboard/template/dashboard-form.html'
    },
    '/dashboard/:id': {
        controller: 'DashboardViewController',
        controllerUrl: 'portal/dashboard/controller/dashboard-view',
        templateUrl: 'app/portal/dashboard/template/dashboard-view.html'
    },
    '/dashboard/public/:id': {
        controller: 'PublicDashboardViewController',
        controllerUrl: 'portal/dashboard/controller/dashboard-view-public',
        templateUrl: 'app/portal/dashboard/template/dashboard-view-public.html'
    },
    '/dashboard/:id/edit': {
        controller: 'DashboardFormController',
        controllerUrl: 'portal/dashboard/controller/dashboard-form',
        templateUrl: 'app/portal/dashboard/template/dashboard-form.html'
    },
    '/user/form': {
        controller: 'UserFormController',
        controllerUrl: 'portal/user/controller/user-form',
        templateUrl: 'app/portal/user/template/user-form.html'
    },
    '/user/new': {
        controller: 'UserFormController',
        controllerUrl: 'portal/user/controller/user-form',
        templateUrl: 'app/portal/user/template/user-form.html'
    }
};

然后我在主角度模块文件中有这个:

connecta.config(function ($controllerProvider, $compileProvider, $provide, $filterProvider, $translateProvider, $routeProvider, $httpProvider, $sceProvider, applications) {
    configureLazyProviders($controllerProvider, $compileProvider, $provide, $filterProvider);
    configureTranslations($translateProvider, window.navigator);
    configureRoutes($routeProvider);
    configureRequestInterceptors($httpProvider, applications);
    configureHTTPWhitelist($compileProvider, $sceProvider);

    configureAuthenticationListener($httpProvider, $routeProvider);
});

调用此configureRoutes函数:

function configureRoutes($routeProvider) {
    var allRoutes = buildRoutes(portal, presenter, maps);
    angular.forEach(allRoutes, function (route, url) {
        if (route.controllerUrl) {
            if (!route.resolve) {
                route.resolve = {};
            }

            if (!route.resolve.load) {
                route.resolve.load = function ($q, $rootScope) {
                    var deferred = $q.defer();
                    require([route.controllerUrl], function () {
                        deferred.resolve();
                        $rootScope.$apply();
                    });
                    return deferred.promise;
                };
            }
        }
        $routeProvider.when(url, route);
    });

    $routeProvider.otherwise({
        template: '<h1>Not Found</h1>'
    });
}

调用此辅助buildRoutes函数:

function buildRoutes() {
    var finalRouteObject = {};
    angular.forEach(arguments, function (module) {
        // Coloca a referência
        angular.forEach(module._routes, function (value) {
            value.module = module.name;
        });

        $.extend(true, finalRouteObject, module._routes);
    });
    return finalRouteObject;
}

此代码正在运行,并且最近没有更改,只有Angular已更新,它会将此奇怪的重定向到根路径。

0 个答案:

没有答案