【问题标题】:Angular nomod error even when the module declared with empty array即使使用空数组声明的模块也会出现角度 nomod 错误
【发布时间】:2016-10-14 22:37:22
【问题描述】:

尝试像这样创建一个简单的 Angular 应用程序:

HTML

<div ng-app="myApp">
  <div ng-controller="appCtrl">

    Test Variable :

    <input type="radio" class="radio-inline" name="test" ng-model="var.test" value=true> Yes

    <input type="radio" class="radio-inline" name="test" ng-model="var.test" value=false> No

    <hr>
    <p>{{var.test}}</p>
    <hr>
    <p>Yes: <span ng-if="var.test">$</span></p>
    <p>No: <span ng-if="!var.test">$</span></p>
  </div>

</div>

Javascript

var myApp = angular.module('myApp', []);
myApp.controller('appCtrl', function($scope) {
  $scope.var = {
    test: true
  }
})

但我在页面加载时收到此错误:

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

这里是fiddle

这可能是一件愚蠢的事情,但我无法弄清楚这段代码有什么问题,请帮助我。谢谢!

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    我也可以通过将负载类型更改为 no-wrap in body 来使您的代码按原样工作:

    click on javascript tool option and select no wrap- in <body>
    

    https://jsfiddle.net/xgr70bba/3/

    【讨论】:

    • 谢谢,这行得通,你能解释一下这背后的原因吗?
    • 我相信角度控制器试图在 DOM 完全加载之前执行(即使选择了 onload),我想是 jsfiddle 错误。但是,如果您附加到 body 标记的末尾,则只有在加载该点之前的所有 DOM 之后才会加载所有脚本,因此必要的 DOM 资源已经可用。我在 plunker 中尝试过之后偶然发现了这个解决方案,并且没有问题。
    【解决方案2】:

    您的代码没有问题,但问题出在提琴手上。实际在做什么 角度应用程序名称已经在 html 标记中注入了一些方法,当您在 div 中添加新应用程序名称时,它会引发错误。

    检查这个:Working example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多