【发布时间】:2014-04-19 20:10:36
【问题描述】:
我是 AngularJS 的新手,我通过一些文档和教程来学习。我的问题是关于 Egghead 的视频系列,特别是这个视频,它演示了如何组合一个基本的搜索过滤器。我想在一个真正的应用程序中使用它,我正在为一个拥有小型蜡烛制作业务的朋友构建,但是当我将它修改为她的蜡烛而不是复仇者联盟演员时(如视频中演示的那样)我收到了这个错误:
未捕获的错误:[$injector:modulerr] 无法实例化模块 myApp,原因是:
错误:[$injector:nomod] 模块“myApp”不可用!您要么拼错了模块名称,要么忘记加载它。如果注册一个模块,请确保您指定...
我将视频演示中的内容的编辑(数组中只有 3 个演员)版本复制到 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 链接不再有效。我已删除损坏的链接。提到的教程仍然可以查看。
【问题讨论】:
-
尝试在你的小提琴中使用 No Wrap - In Head:jsfiddle.net/Q5hd6
-
不要放在头部,而是放在身体的末端!
-
@ExpertSystem: 在这种情况下,body 或 head 都可以工作。我还在回答中添加了解释。
-
@ExpertSystem:还有一件事,加载选项适用于脚本窗口中的脚本,而不是框架脚本。
-
@KhanhTO:这正是 ng-cloak 的用途:)
标签: angularjs jsfiddle angularjs-module