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



我是角度的新手,我遇到了这个问题:

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文件,我正在尝试操作对象和数组。我只是想安慰.log我想要什么,这样我就能看到我要去哪里。这是我的 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;
 }
})
您需要

更正以下几点:

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

因此,将其注册为控制器: rankingModule.controller('indexCtrl', function ($q, $http) {..\

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

<html ng-app="rankingModule">

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

例如:

立即使用:angular.module('rankingModule' , [](;

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

在役:angular.module('rankingModule'(.service...

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

相关内容

最新更新