我的angularJS路由有问题

时间:2017-05-25 18:13:42

标签: angularjs

我很难搞清楚。我将路由配置分成了单独的文件,我不知道出了什么问题。基本上,当我在我的页面上放置链接到我的角度应用程序中的另一个页面时,它可以工作,但是当我复制该URL并加载另一个选项卡或浏览器时,它会给我404.为什么会发生这种情况?这是我的代码:

这就是我app-config.js的样子:

(function () {
    'use strict';

    angular
        .module('myApp')
        .run(appRunner)
        .config(appConfig);

    appRunner.$inject = ['$rootScope', '$route', '$translate']
    appConfig.$inject = ['$routeProvider', '$locationProvider', '$translateProvider', 'LANGUAGES', 'TRANSLATIONS'];

    function appConfig($routeProvider, $locationProvider, $translateProvider, LANGUAGES, TRANSLATIONS) {

        $routeProvider.otherwise({
            redirectTo: '/404'    
        });

        $locationProvider.html5Mode(true);

        console.log('configured shit...')

        configureTranslations() ;

        function configureTranslations() {
            var english = TRANSLATIONS[LANGUAGES.EN];
            var spanish = TRANSLATIONS[LANGUAGES.ES];

            $translateProvider.translations(LANGUAGES.EN, english);
            $translateProvider.translations(LANGUAGES.ES, spanish);

            $translateProvider.preferredLanguage(LANGUAGES.EN);
        }

    }

    function appRunner($rootScope, $route, $translate) {

        $rootScope.$on('$routeChangeSuccess', function() {
            setPageTitle();
        });

        function setPageTitle() {
            console.log('current route: ', $route.current)

            $translate($route.current.title).then(function(pageTitle) {
                document.title = pageTitle;    
            });
        }
    }

})();

然后我有另一个文件在另一个页面中配置路由:

(function () {
    'use strict';

    angular
        .module('myApp.views.caesar')
        .config(routeConfig);

    routeConfig.$inject = ['$routeProvider'];

    function routeConfig($routeProvider) {

        $routeProvider.when('/caesar-cipher', {
            templateUrl: 'views/caesar-cipher/view.html',
            controller: 'CaesarCipherCtrl as caesarCipherCtrl',
            title: 'CAESAR.TITLE'
            }
        });

    }

})();

在我的标题中,我有一个链接到/caesar-cipher页。

<a href="/" translate>CAESAR.TITLE</a> 

正如我所说,当我点击链接时,它会转到正确的页面。但是当我在另一个标签上打开相同的链接时,它只给我404和一个空白页面。我该如何解决这个问题?

这很奇怪,因为日志说,它找到了资源,然后是下一个 我知道的事情,它找不到任何东西。

[Fri May 26 2017 02:16:58 GMT+0800 (PHT)] "GET /partials/header/header.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
[Fri May 26 2017 02:16:58 GMT+0800 (PHT)] "GET /views/caesar-cipher/view.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
[Fri May 26 2017 02:16:58 GMT+0800 (PHT)] "GET /images/ciphers_cover.jpg" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
[Fri May 26 2017 02:17:00 GMT+0800 (PHT)] "GET /about" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
[Fri May 26 2017 02:17:00 GMT+0800 (PHT)] "GET /about" Error (404): "Not found"

0 个答案:

没有答案