【发布时间】:2017-04-16 13:21:35
【问题描述】:
我正在通过 ui-router、Factory 和 Directive 实现逻辑,但出现错误:JavaScript 运行时错误:Angular Js 中的 [$injector:modulerr]。
Ui-Routing 工作正常。
Index.html 文件:
<html><head><title>Employee Management System</title>
<link href="Content/bootstrap.css" rel="stylesheet" />
<script src="Scripts/jquery-1.9.1.min.js"></script>
<script src="Scripts/angular.min.js"></script>
<script src="Scripts/angular-ui-router.min.js"></script>
<script src="Scripts/bootstrap.min.js"></script>
<script src="Scripts/app/EmpRecord.js"></script>
<script src="Scripts/app/GetDataService.js"></script>
<script src="Scripts/app/EmpController.js"></script>
<script src="Scripts/app/EmpApp.js"></script></head>
<body ng-app="EmpApp">
<div class="page-header">Employee Management System
</div><div ng-include="'pageContents/menu.html'"></div>
<ui-view></ui-view></body></html>
EmpApp.js
var app = angular.module("EmpApp", ['ui.router']);
app.factory('EmpFact', ['$http', EmpFact])
.controller('EmpController', ['$scope', 'EmpFact',EmpController])
.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
templateUrl: '/home.html'
})
.state('Add', {
templateUrl: '/AddEmployee.html'
})
.state('List', {
templateUrl: 'ListEmp.html',
controller: 'EmpController'
}
)
})
.directive('emp-Record', EmpRecord);
ListEmp.html:
<div><div><h3>List of Employees</h3></div>
<div EmpRecord ng-repeat="e in Employees"></div></div>
EmpController
<div><div><h3>List of Employees</h3></div>
<div EmpRecord ng-repeat="e in Employees"></div></div>
GetDataService.js
var EmpFact = function ($http) {
var records = {}
$http.get('http://localhost/EmployeeApi/api/Emp')
.then(function (response) {
records= response.data;
});
return {
GetData: function () {
alert(records);
return records;
}
}
}
现在所有错误都消失了,但数据没有到来。
简而言之: 控制器:
var EmpController= function ($scope,EmpFact) {
$scope.Employees = EmpFact.GetData();
console.log($scope.Employees);
};
服务:
var EmpFact = function ($http) {
var records = {}
$http.get('http://localhost/EmployeeApi/api/Emp')
.then(function (response) {
records= response.data;
});
return {
GetData: function () {
alert(records);
return records;
}}}
Àpp.js
app.factory('EmpFact', ['$http', EmpFact])
.controller('EmpController', ['$scope','EmpFact', EmpController])
.directive('empRecord', function () {
return {
template: "<tr><td>{{e.empid}}</td><td>{{e.empName}}</td><td>{{e.empEmail}}</td><td>{{e.empSalary}}</td>"
}});
HTML:
<div>
<div><h3>List of Employees</h3></div>
<div emp-Record ng-repeat="e in Employees"></div>
</div>
【问题讨论】:
-
请使用
angular.js而不是angular.min.js并提供完整错误消息。 -
0x800a139e - JavaScript 运行时错误:[$injector:modulerr] 无法实例化模块 EmpApp,原因是:错误:[$compile:baddir] 指令/组件名称“EmpRecord”无效。第一个字符必须是小写字母
-
我更新了指令的命名约定。现在我在控制器上收到错误:TypeError: Unable to get property 'GetData' of undefined or null reference
-
@GAURAVMAHAJAN 你确定你将服务注入控制器,不应该是
.controller('EmpController', ['$scope', 'EmpFact', EmpController]),当然在控制器功能本身你也必须包含它:var EmpController = function ($scope, EmpFact) { -
我现在投票结束这个问题,因为这个问题太宽泛了。您已经解决了您提出的问题,然后更改了问题,然后解决了该问题,然后再次更改了问题以提出第三个完全不同的问题。您已将问题转变为故障排除会话,这对其以后的其他人没有帮助。