zaizhan_shi 2017-05-22 09:15 采纳率: 0%
浏览 397

关于angularjs路由的基础问题

学习路由时遇到一个很迷惑的知识点,查询了很多帖子和教学资料,发现angular的简单路由基本是导入route模块,利用a标签的#/name来调用在config里定义的routeProvider来达成路由效果。但是我的a标签里直接使用#/name跳转地址会出现错误出现例如:path/index.html#!/index.html和跳转后path/index.html#!/index.html#%2Fname.html的地址,只有在a标签使用href=“#!/name”才可以达成路由效果,这是为什么,和大多数帖子和视频实际情况不符,并且身边同事的项目实际使用效果也和我的情况不一样

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-12-09 21:41
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。
    (讯飞星火专栏,V3.0版本,2023.10.24)


    该回答引用讯飞星火认知大模型,仅提供参考,不保证完全正确
    在 AngularJS 中,路由是基于 HTML5 的 history API 实现的。当你使用 a 标签的 href 属性进行页面跳转时,浏览器会发起一个新的请求,这会导致路由失效。这就是为什么你在使用 a 标签的 href 属性进行路由跳转时会出现错误的原因。


    具体来说,当你点击一个链接并尝试导航到新的状态时,如果你使用的是 a 标签的 href 属性(例如:Home),浏览器会尝试加载该地址的页面内容。但由于 AngularJS 应用是单页应用,实际上并没有这个地址的页面内容,所以浏览器会返回404错误。这就是为什么你看到类似于 path/index.html#!/index.html 和 path/index.html#!/index.html#%2Fname.html 这样的地址。


    为了避免这个问题,你应该使用 a 标签的 ng-click 属性来触发路由跳转,如下所示:

    <a ng-click="goToHome()">Home</a>
    

    同时,在控制器中定义 goToHome 函数:

    $scope.goToHome = function() {
        $location.path('/home');
    };
    

    这样,当用户点击链接时,不会发起新的请求,而是通过 AngularJS 的路由机制来导航到新的状态,从而避免了上述问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog