1. 程式人生 > >AngularJS(02)---控制器

AngularJS(02)---控制器

接著上一篇的例子,我們來了解一下控制器

AngularJS控制器

AngularJS applications通過控制器進行控制。

ng-controller指令定義了一個application的控制器。

一個控制器就是一個JavaScript物件,它可以通過標準的JavaScript物件建構函式來建立。

<!doctype html>
<html>

<head>
    <script src="http://apps.bdimg.com/libs/angular.js/1.3.9/angular.min.js"></script>
</head>

<body>
    <div ng-app="myApp" ng-controller="myCtrl">
        First Name:
        <input type="text" ng-model="firstName">
        <br> Last Name:
        <input type="text" ng-model="lastName">
        <br>
        <br> Full Name: {{firstName + " " + lastName}}
    </div>
    <div>
    	<p>{{firstName}}</p>
    </div>
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.firstName = "Danel";
        $scope.lastName = "Green";
    });
    </script>
</body>

</html>

AngularJS application通過ng-app="myApp"來定義。該application的有效作用域處於ng-app所在的<div>中。

ng-controller="myCtrl"屬性即一個AngularJS指令,它定義了一個控制器。

myCtrl函式是一個普通的JavaScript函式。

AngularJS使用$scope物件來呼叫控制器。

在AngularJS中,$scope是一個application物件(即application變數和函式的所有者)。

控制器包含兩個屬性(或者叫變數):firstNamelastName。它們被附加到$scope物件上。

ng-model指令將input標籤的值繫結到控制器的屬性上(firstName和lastName)。

控制器的方法

上面的例子展示了控制器物件包含兩個屬性:lastName和firstName。

控制器也可以包含方法(將函式賦值給變數):

<!doctype html>
<html ng-app="myApp">

<head>
    <script src="http://apps.bdimg.com/libs/angular.js/1.3.9/angular.min.js"></script>
</head>

<body>
    <div ng-controller="personCtrl">
        First Name:
        <input type="text" ng-model="firstName">
        <br> Last Name:
        <input type="text" ng-model="lastName">
        <br>
        <br> Full Name: {{fullName()}}
    </div>
    <script>
    var app = angular.module('myApp', []);
    app.controller('personCtrl', function($scope) {
        $scope.firstName = "Danel";
        $scope.lastName = "Green";
        $scope.fullName = function() {
            return $scope.firstName + " " + $scope.lastName;
        }
    });
    </script>
</body>

</html>

在大型應用中,常常會將控制器程式碼寫在外部檔案中。將<script>標籤中的程式碼拷貝到personController.js外部檔案中即可