You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ui.router无法获取URL内容,请求技术协助

解决AngularJS + ui.router 路由跳转提示“object not found”的问题

我帮你排查了代码里的几个关键问题,这些都是用AngularJS + ui.router时很容易踩的坑,咱们一个个来修正:

1. 脚本加载顺序错误

ui.router是AngularJS的第三方插件,必须在AngularJS核心库之后加载。你当前的加载顺序是先加载ui.router,再加载AngularJS,这会导致ui.router无法找到Angular的全局对象,直接导致路由功能失效。

修正后的HTML脚本顺序:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.16/angular-ui-router.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="first.js"></script>

2. 路由URL缺少开头斜杠

定义state的url属性时,必须以/开头,否则路由会基于当前页面路径进行拼接,导致实际请求的路径不符合预期。同时建议配置默认路由,避免初始状态无匹配的问题。

修正后的JS路由配置:

var app=angular.module('myApp', ['ui.router']); 
app.config(function($stateProvider, $urlRouterProvider) { 
  // 配置默认路由,防止初始状态无匹配
  $urlRouterProvider.otherwise('/first');
  
  $stateProvider.state('home', { 
    url: '/first', // 加上开头的斜杠
    templateUrl: 'msg.html' // 去掉末尾的多余空格
  }); 
});

3. 使用ui-sref替代普通href

普通的<a href>会直接触发浏览器的页面跳转,而不会通过ui.router的状态管理机制。你需要用ui.router提供的ui-sref指令来绑定路由状态,这样才能正确触发路由切换。

修正后的HTML链接:

<a ui-sref="home">firstname</a>

4. 移除templateUrl的多余空格

你的templateUrl: 'msg.html '末尾有个空格,这会导致浏览器请求的文件名是带空格的msg.html ,而实际你的文件是msg.html,所以会出现找不到文件的错误,直接去掉空格即可。

验证修正后的效果

把以上修改全部应用后,点击firstname链接时,ui.router会正确触发home状态,加载msg.html的内容到ui-view容器里,不会再出现“object not found”的错误。

内容的提问来源于stack exchange,提问作者ronaldino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:26:08