错误:$ injector:modulerr模块错误/角度服务

时间:2017-05-16 08:28:41

标签: javascript angularjs node.js

我是棱角分明的新手,我遇到了这个问题:

angular.js:38 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.6.4/$injector/modulerr?p0=serviceApp&p1=Error…ogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.6.4%2Fangular.min.js%3A22%3A179)
at angular.js:38
at angular.js:4920
at q (angular.js:403)
at g (angular.js:4880)
at eb (angular.js:4802)
at c (angular.js:1914)
at Sc (angular.js:1935)
at ue (angular.js:1820)
at angular.js:33367
at HTMLDocument.b (angular.js:3431)

我有一个简单的js和html文件,我试图操纵对象和数组。我只想安慰我。我想要什么,所以我可以看到我要去的地方。 这是我的HTML:

<!DOCTYPE html>
<html ng-app="serviceApp">
   <body>
    <div ng-controller="indexCtrl">
    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
    <script src="services.js"></script>
   </body>
<html>

这是我的功能

的服务
let rankingModule = angular.module('rankingModule', []);

let rankingsProm = [
   {
  position: 1,
  user: 323232,
  score: 100
   }, {
  position: 2,
  user: 1213232,
  score: 89
 }
];

let usersProm = [
 {
  id: 1313232,
  firstName: 'John',
  lastName: 'Doe'
 },
];


rankingModule.service('indexCtrl', function ($q, $http) {
 $q.all([rankingsProm, usersProm]).then(function (responses) {
   //$q returns an array of promises
   console.log(responses)
   console.log(mergeRankingWithUsers(responses[0], responses[1]))
 })

  function mergeRankingWithUsers (rankings, users) {
   let merged = rankings.map(function (ranking) {
    let index = users.findIndex(function (user) { return user.id === ranking.user; });
    ranking.firstName = index > -1 ? users[index].firstName : 'unknown';
    ranking.lastName = index > -1 ? users[index].lastName : 'unknown';
  return ranking;
  })
  return merged;
 }
})

3 个答案:

答案 0 :(得分:3)

您正在使用ng-app引用错误的模块,应该是,

<html ng-app="rankingModule">

答案 1 :(得分:3)

你需要纠正以下几点:

  1. 请参阅正确的模块<html ng-app="rankingModule">
  2. 更正您的控制器注册,因为您在HTML indexCtrl
  3. 中将<div ng-controller="indexCtrl">称为控制器

    所以注册为控制器:   rankingModule.controller('indexCtrl', function ($q, $http) {..\\

答案 2 :(得分:1)

避免使用全局变量来存储角度模块。这被认为是一种不好的做法,因为这可能与其他模块冲突。

例如:

Straightaway,使用: angular.module('rankingModule',[]);

在控制器中: angular.module( 'rankingModule')。控制器...

在服务中: angular.module( 'rankingModule')。服务...

在您的情况下,全局变量的名称是特定的,但在许多情况下,您可能将您的变量命名为太通用,以至于它可能被任何库覆盖。