【问题标题】:Unsure why 'userApp' module is unavailable不确定为什么“userApp”模块不可用
【发布时间】:2015-07-12 22:45:02
【问题描述】:

刚开始使用 angularJS,我不确定为什么我的模块不可用。

第一个代码 sn-p 是 HTML (main.js) 中引用的代码。

'use strict';

angular.module('userApp')
  .controller('MainCtrl', function($scope, $http) {
    $scope.user = [];
    $http.get('http://127.0.0.1:8080/collector/50001366562').success(function(data) {
      $scope.user = data;
    })
  })
<html ng-app="userApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.js"></script>
<script src="js/controllers/main.js"></script>
</head>
<body ng-controller="MainCtrl">
{{user}}

</body>
</html>

谁能解释一下为什么这不起作用?

在 chrome JS 控制台中,我收到以下错误:

未捕获的错误:[$injector:nomod] 模块“userApp”不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。

未捕获的错误:[$injector:modulerr] 无法实例化模块 userApp,原因如下: 错误:[$injector:nomod] 模块“userApp”不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    函数angular.module既可以用作getter,也可以用作setter:

    创建新模块时必须使用setter

    angular.module('userApp', []);
    

    这里的第二个参数是依赖数组

    当您想访问现有模块时,例如。 G。要添加服务、控制器等,您可以使用 getter(没有第二个参数)

    angular.module('userApp')
    

    Getter 会将模块返回给你,在应用生命周期内可以多次调用。

    【讨论】:

      【解决方案2】:

      我对 Angular 也很陌生,但是当你声明一个模块时,你不需要第二个参数吗?

      angular.module('userApp', []);
      

      这个解决方案就是错误信息传达的内容:

      如果注册模块,请确保将依赖项指定为第二个参数。

      【讨论】:

      • 是的,当然可以,否则它是对该名称的现有(先前声明的)模块的引用
      • 可以使用 global var 分配控制器 w/o,但您的第一句话是真实的
      • @ArtemPetrosian 是的,你使用你有问题的东西......没有依赖参数......angular.module('userApp').controller('AnotherCtrl'...
      • @ArtemPetrosian ja 我知道(我已经编辑)但不分配给变量确实意味着应用程序无法访问(尽管您为什么需要访问它,我不知道)。
      • it's at least recommended ... 不,实际上是现在大多数样式指南中避免变量的最佳实践。没有它,代码更具可移植性和可读性
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多