gpt4 book ai didi

AngularJS:未捕获错误:[$injector:modulerr] 无法实例化模块?

转载 作者:行者123 更新时间:2023-12-02 19:51:26 26 4
gpt4 key购买 nike

我是 AngularJS 的新手,正在通过一些文档和教程来学习。我的问题是关于 Egghead 的视频系列,特别是这个视频,演示了如何组合一个基本的搜索过滤器。我想在一个真实的应用程序中使用它,我正在为一位拥有小型蜡烛制作业务的 friend 构建它,但是当我将其修改为她的蜡烛而不是复仇者联盟的 Actor 阵容(如视频中演示的那样)时,我收到了此错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to:

Error: [$injector:nomod] Module 'myApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify ...

我将视频演示中的编辑版本(数组中只有 3 个 Actor )复制到 jsfiddle 中,发现它仍然会产生相同的错误。 (作为引用,Egghead 演示位于:http://www.thinkster.io/angularjs/ET1iee6rnm/angularjs-ngfilter)。到目前为止,我已经在该网站上阅读了至少六个类似的问题,并尝试了提供的所有解决方案,但没有一个解决方案能够消除此错误或导致复仇者联盟搜索(在视频演示中运行良好)真正发挥作用正确地。

HTML:

<div ng-app="myApp">
<div ng-controller="AvengersCtrl">
<input type="text" ng-model="search.$" />
<table>
<tr ng-repeat="actor in avengers.cast | filter:search">
<td>{{actor.name}}</td>
<td>{{actor.character}}</td>
</tr>
</table>
</div>
</div>

Javascript:

var myApp = angular.module('myApp', []);
myApp.factory('Avengers', function () {
var Avengers = {};
Avengers.cast = [
{
name: "Robert Downey Jr.",
character: "Tony Stark / Iron Man"
},
{
name: "Chris Evans",
character: "Steve Rogers / Captain America"
},
{
name: "Mark Buffalo",
character: "Bruce Banner / The Hulk"
}
];
return Avengers;
})

function AvengersCtrl($scope, Avengers) {
$scope.avengers = Avengers;
}

简单地说,有人可以提供一个可行的解决方案并消除这个错误,并用简单的英语(不是博士级别的“Angular Obscurese”)解释导致它的原因(简而言之)以及什么需要采取什么措施来避免它?

编辑:抱歉,但是教程中上面引用的 jsfiddle 链接不再有效。我已经删除了损坏的链接。提到的教程仍然可供查看。

最佳答案

尝试在 fiddle 中使用No Wrap - In HeadNo Wrap - in body:

工作 fiddle :http://jsfiddle.net/Q5hd6/

说明:

当 DOM 完全加载时,Angular 开始编译 DOM。你注册你的代码来运行 onLoad ( fiddle 中的 onload 选项)=> 注册你的 myApp 模块已经太晚了,因为 Angular 开始编译 DOM 并且 Angular 发现没有名为 myApp 的模块并抛出异常。

通过使用No Wrap - In Head,您的代码如下所示:

<head>

<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js'></script>

<script type='text/javascript'>
//Your script.
</script>

</head>

您的脚本有机会在 Angular 开始编译 DOM 之前运行,并且当 Angular 开始编译 DOM 时,myApp 模块已经创建。

关于AngularJS:未捕获错误:[$injector:modulerr] 无法实例化模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22406633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com