无法直接导航到 URL Angular UI 路由器

Posted

技术标签:

【中文标题】无法直接导航到 URL Angular UI 路由器【英文标题】:Can't navigate directly to URL Angular UI Router 【发布时间】:2015-10-24 09:13:10 【问题描述】:

这是我的路由器文件: 它嵌套在 require.js 块中并配置为使用 Jade 模板

define([
    './app',
    'angular.uirouter'
], function(app, angularUIRouter) 
    "use strict";

    // ROUTES
    app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) 

        // loads url from the index
        $urlRouterProvider.otherwise('/');

        $locationProvider.html5Mode(true);

        $stateProvider
            .state('dashboard', 
                url:'/dashboard',
                views: 
                    'core' : 
                        templateUrl: '/articles/dashboard'
                    
                
            ) 
    ]);
);

这是我的 Express.js 路由器文件:

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res) 
    res.render('main',  
        title: 'Express' 
    );
);

router.get('/dashboard', function(req, res) 
    console.log("/dashboard requested");
);

router.get('/articles/:name', function (req, res)  
    var name = req.params.name;
    res.render('articles/' + name);
);

module.exports = router;

当我访问 localhost:3000/dashboard 时,它正在向服务器发出 GET 请求。如何配置 Angular UI Router 来处理 GET 请求而不是服务器?

注意:我仍然可以访问 localhost:3000/articles/dashboard 并查看仪表板。还有,

a(ui-sref="dashboard")

正确加载仪表板。

【问题讨论】:

【参考方案1】:

无论是 Angular 还是 ui 路由器都无法处理服务器 GET。 Angular $locationProvider html5Mode 仅解决客户端设置 - url 不包含 # 并且位置控件也是 URL 中的路径部分。

Html5 模式需要服务器端配置。每个请求都必须返回应用程序入口点 - 通常是 index.html。

例如

router.get('/dashboard', function(req, res) 
  res.sendfile('path-to/index.html');
);

【讨论】:

关于如何以这种方式显示仪表板寻呼机而不是将用户“重定向”到主页的任何想法?

以上是关于无法直接导航到 URL Angular UI 路由器的主要内容,如果未能解决你的问题,请参考以下文章

Angular路由导航的7个步骤

Angular路由导航的7个步骤

通过 URL 导航时,Ionic 5 / Angular 路由不起作用

个人技术博客——Angular路由

Angular 5 的子路由无法正常工作

Angular6路由器导航到共享相同组件的多个子路由