“角度未定义”的原因是什么

IT技术 javascript angularjs
2021-03-05 16:47:17

我正在关注egghead.io上的视频教程,但是在他创建工厂时尝试遵循他的示例(参见此处的视频)时,我不断收到“角度未定义”参考错误,但我已包含了角度脚本

这是我的 html 页面:

<!DOCTYPE html>
<html>
    <head>
    <title>Prototype</title>
    <link rel="stylesheet" type="text/css" href="foundation.min.css">
    <script type="text/javascript" src="main.js"></script>
    </head>
    <body>

    <div data-ng-app="">

        <div data-ng-controller="FirstController">
            <input type="text" data-ng-model="data.message">
            <h1>{{ data.message }}</h1>
        </div>



        <div data-ng-controller="SecondController">
            <input type="text" data-ng-model="data.message">
            <h1>{{ data.message }}</h1>
        </div>


    </div>
    <script type="text/javascript" src="angular.min.js"></script>
    </body>
</html>

这是我的 javascript 文件“main.js”:

//Services
    // step 1 create an app                             
    var myApp = angular.module('Data', []).
    // tep 2 create factory
                // Service name, function
    myApp.factory('Data', function(){
        return { message: "I'm Data from a Service" }
    });



//Controllers
    function FirstController($scope, Data){
        $scope.data = Data;
    }

    function SecondController($scope){

    }

我已经阅读了一些类似发生的帖子(这里),如果我错了,请纠正我,但我认为这与引导捆绑有关,我尝试使用手动引导,angular.bootstrap(document, ['Data']);但没有成功,仍然出现相同的错误。

但我想知道的是,为什么这适用于如此多的在线示例,例如 Egghead 视频系列,但我有一些问题,因为我相信我非常密切地关注了他的视频。最近版本的角度有变化吗?

3个回答

您必须将脚本标记放在引用 Angular 的标记之后。将其移出head

<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="main.js"></script>

按照您现在设置的方式,您的脚本会在 Angular 加载到页面上之前运行。

我是一个非常愚蠢的错误。我没有链接到angular.jshtml 文件中的文件。我有同样的错误。
2021-04-24 16:47:17
我遇到了同样的问题。它是由一个视频中的 egghead 引起的,在页面底部定义了 angular.min.js,然后在另一个视频中它被移动到 main.js 定义位置的顶部标题。
2021-04-28 16:47:17
谢谢,非常感谢我犯的一个愚蠢的错误,一旦允许我回答,我将不考虑
2021-05-12 16:47:17

您还没有为 angular js 放置脚本标签

您可以通过使用 cdn 或为您的项目下载 angularjs 然后引用它来实现

在此之后,您必须在您的案例 main.js 中添加您自己的 Java 脚本

那应该做

你没有尝试这样做,是吗?
2021-04-23 16:47:17
对不起,老兄,我错了,我错过了最后一个 <script> 标签:P 如果我们将脚本标签放在一起会不会更好(在开头和结尾也保留脚本标签)。将它们放在顶部或底部,最好保留在底部,因为这样做会首先让您的页面加载,然后您的所有脚本都会加载。
2021-05-08 16:47:17

我和德克有同样的问题。我忘了包括最重要的脚本:angular.js :)

<script type="text/javascript" src="bower_components/angular/angular.min.js"></script>