无法在AngularJS中初始化控制器

时间:2014-06-06 10:30:49

标签: angularjs

所以我试图开始使用Angular,但遇到了一个非常简单的问题。我的应用程序中有3个页面(index.html,app.js和invite.js)。现在,我似乎已经成功初始化了角度应用程序,我可以运行该应用程序(请参阅app.js中的console.log)。

问题是 - 我正在尝试创建另一个控制器,并且我使用简单的alert()函数对其进行测试 - 但我没有得到任何响应。

任何人都可以帮助指出我哪里出错了吗?我认为这是一个简单的问题!

提前致谢:)

Index.html

<!doctype html>
<html lang="en">
<head ng-app="batchSparta">
    <meta charset="UTF-8">
    <title>Batch Inviter</title>
    <!-- CSS and Javascripts --> 
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
    <script src="app.js"></script>
    <script src="invite.js"></script>
    <!-- END CSS and Javascripts -->

</head>
<body>
    <div class="container" ng-controller="InviteController">
        <div class="well">
            Here you can bulk-invite users to your Sparta account.
        </div>  

        <div ng-click="alert()" class="btn btn-primary">Generate Alert</div>

    </div>
</body>
</html>

app.js(已成功显示已记录的消息)

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

app.run([

    function() {
        console.log("Angular is running!");
    }
]);

invite.js

app.controller("InviteController", function($scope) {
    $scope.alert = function($scope) {
        alert("Alert triggered");
    }
})

1 个答案:

答案 0 :(得分:4)

您在head元素上设置了ng-app,因此当Angular引导时,它会在您的控制器未找到(并且不能找到)的区域初始化您的应用。

这解释了为什么你会看到run日志;然而,你的控制器不起作用。

除非您的Angular应用程序仅驻留在页面的一部分上,否则您可以安全地在html标记上设置该属性,使其包含整个页面:

<html lang="en" ng-app="batchSparta">

Demo