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

使用AngularJS ui-router路由时遇‘控制器未注册’错误求助

解决ui-router中“controller is not Registered(控制器未注册)”的问题

我来帮你排查这个问题,从你给出的代码来看,主要有几个关键点需要修正:

1. 未在HTML中引入控制器脚本文件

你的HTML代码里没有加载contact.js,这是最直接的原因——控制器代码都没被浏览器加载,Angular自然找不到名为abc的控制器。

修改HTML,添加contact.js的引用(注意路径要匹配实际文件位置):

<title></title>
<script src="../../Scripts/angular.js"></script>
<script src="../../Scripts/angular-ui-router.js"></script>
<script src="Admin_MyApp.js"></script>
<script src="../EmployeePages/EmployeeScripting/Employee_MyApp.js"></script>
<!-- 新增控制器脚本引用 -->
<script src="contact.js"></script>
<ul>
<li><a ui-sref="Contact">Contact</a></li>
</ul>

另外补充:ui-sref的写法不需要加括号,直接写状态名Contact即可。

2. 控制器模块引用方式不严谨

你的contact.js里直接用了app.controller,但app是Admin_MyApp.js中定义的局部变量,如果脚本加载顺序发生变化(比如contact.js在Admin_MyApp.js之前加载),app会未定义,导致控制器注册失败。更稳妥的写法是直接通过模块名称获取引用:

修改contact.js代码:

// 通过模块名称获取引用,避免依赖全局变量
angular.module('Admin_MyApp').controller('abc', function ($scope) {
    // 你的控制器逻辑代码
});

3. 路由URL的细节优化

你的Contact状态的url没有加开头的斜杠,可能会导致路由路径拼接错误,建议修正为:

.state('Contact', {
    url: '/contact', // 加上开头的斜杠,保证路径解析正确
    templateUrl: '/Kpmg/AdminPages/EmployeeDetails/Feedback.html',
    controller: 'abc'
})

按照这几点修改后,控制器应该就能正常注册并被ui-router识别了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:25:50