【问题标题】:AngularJS Uncaught Error: No module: myAppAngularJS未捕获错误:没有模块:myApp
【发布时间】:2018-11-28 17:15:39
【问题描述】:

AngularJS:使用 angular.module 和 VM

我已将我的 Angular 模块定义如下,并希望按照指南使用 VM。不知道我在这里做错了什么,但它在控制台中给了我错误:

未捕获的错误:没有模块:myApp

这是我的代码:

<div ng-controller="Ctrl">
    Hello, {{vm.name}}!
</div>
var app = angular.module('myApp');

app.controller('Ctrl', ['$scope', '$http',
  function ($scope, $http) { 
    var vm = this;
    vm.name = "John";
}]);

这是我的 jsfiddle:

https://jsfiddle.net/dn7pkuf8/

【问题讨论】:

  • 正如 Micky 所说,在调用 angular.module 时,您需要有两个参数来创建模块。 angular.module('moduleName', []) 创建模块 moduleNameangular.module('moduleName') 检索模块 moduleName 的实例

标签: angularjs


【解决方案1】:

首先,您需要在声明模块时添加一个空数组(或一个包含依赖项的数组)。如果没有数组,您将尝试获取名为 myApp 的模块。

var app = angular.module('myApp', []);

然后你需要将应用名称添加到视图中的NgApp 指令,否则角度应用需要引导。

这样试试

<body ng-app="myApp">
  <div ng-controller="Ctrl as vm">
     Hello, {{vm.name}}!
  </div>
</body>

【讨论】:

  • 我想而不是在每个 div/页面上指定。我们可以手动引导如下: var app = angular.module('myApp');
  • @user1563677 您需要添加 NgApp 指令才能使其工作。将其添加到根元素而不是每个视图中。检查我的更新
【解决方案2】:

当你创建一个新模块时,你必须传递一个数组作为第二个参数。

var app = angular.module('myApp', []);

否则它将寻找一个不存在的现有应用“myApp”。

【讨论】:

【解决方案3】:

您似乎正在尝试使用 ContollerAs 语法。我已经设置了 plunkr here

您的 HTML:

<html>

  <head>
    <script type="text/javascript" src="https://code.angularjs.org/1.4.0-rc.2/angular.min.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-app="myApp">
    <h1>Hello Plunker!</h1>

    <div ng-controller="Ctrl as vm">
      Hello, {{vm.name}}!
    </div>
  </body>

</html>

您的 Javascript:

var app = angular.module('myApp', []);

app.controller('Ctrl', function () { 
  var vm = this;
  vm.name = "John";
});

我无法在您的 jsfiddle 中使用它,但我认为这基本上是您使用控制器的 HTML 中的语法更正,以及此处其他人提出的要点(包括 ng-app、您的 javascript模块语法)。

【讨论】:

    【解决方案4】:

    您没有使用正确的语法来创建应用程序实例。 正确的语法如下

    var app = angular.module('myApp',[]);
    

    那么你写的 sysntax 是什么意思呢?

    var app = angular.module('myApp');
    

    这意味着您已经创建了实例并且您希望使用它。现在你会明白为什么 angularjs 会抛出这个错误。因为它不会创建一个新实例,而是寻找那个未创建的实例。

    注意:需要附加参数 [] 来指定 依赖关系。这意味着您可以添加现有的 angularjs 应用程序。表示您可以添加依赖项并使用它。

    你完成的js文件应该如下所示

    var app = angular.module('myApp',[]);
    
    app.controller('Ctrl', ['$scope', '$http',
      function ($scope, $http) { 
        var vm = this;
        vm.name = "John";
    }]);
    

    【讨论】:

      猜你喜欢
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 2014-12-25
      • 1970-01-01
      • 2016-09-16
      相关资源
      最近更新 更多