你的第一个控制器

控制器是 Angular 中使用的基本结构,用于保留范围并处理页面中的某些操作。每个控制器都与 HTML 视图耦合。

下面是 Angular 应用程序的基本样板:

<!DOCTYPE html>

<html lang="en" ng-app='MyFirstApp'>
    <head>
        <title>My First App</title>

        <!-- angular source -->
        <script src="https://code.angularjs.org/1.5.3/angular.min.js"></script>
        
        <!-- Your custom controller code -->
        <script src="js/controllers.js"></script>
    </head>
    <body>
        <div ng-controller="MyController as mc">
            <h1>{{ mc.title }}</h1>
            <p>{{ mc.description }}</p>
            <button ng-click="mc.clicked()">
                Click Me!
            </button>
        </div>
    </body>
</html>

这里有几点需要注意:

<html ng-app='MyFirstApp'>

使用 ng-app 设置应用程序名称可让你在外部 Javascript 文件中访问应用程序,这将在下面介绍。

<script src="js/controllers.js"></script>

我们需要一个 Javascript 文件,你可以在其中定义控制器及其操作/数据。

<div ng-controller="MyController as mc">

ng-controller 属性为该 DOM 元素设置控制器,并为其下的所有子元素(递归)设置。

你可以通过说 ... as mc 来拥有多个相同的控制器(在这种情况下,MyController),我们给控制器的这个实例一个别名。

<h1>{{ mc.title }}</h1>

{{ ... }} 表示法是一个 Angular 表达式。在这种情况下,这将把 <h1> 元素的内部文本设置为 mc.title 的值。

注意: Angular 采用双向数据绑定,这意味着无论你如何更新 mc.title 值,它都将反映在控制器和页面中。

还要注意的是角用语不具有参考的控制器。Angular 表达式可以像 {{ 1 + 2 }}{{ "Hello " + "World" }} 一样简单。

<button ng-click="mc.clicked()">

ng-click 是一个 Angular 指令,在这种情况下绑定按钮的 click 事件以触发 MyController 实例的 clicked() 功能。

考虑到这些因素,让我们编写一个 MyController 控制器的实现。通过上面的示例,你可以在 js/controller.js 中编写此代码。

首先,你需要在 Javascript 中实例化 Angular 应用程序。

var app = angular.module("MyFirstApp", []);

请注意,我们在此处传递的名称与你使用 ng-app 指令在 HTML 中设置的名称相同。

现在我们有了 app 对象,我们可以用它来创建控制器。

app.controller('MyController', function(){
    var ctrl = this;

    ctrl.title = "My First Angular App";
    ctrl.description = "This is my first Angular app!";

    ctrl.clicked = function(){
        alert("MyController.clicked()");
    };
});

注意: 对于我们希望成为控制器实例一部分的任何内容,我们使用 this 关键字。

这就是构建简单控制器所需的全部内容。