zoukankan      html  css  js  c++  java
  • AngularJS快速入门指南05:控制器

      AngularJS控制器用来控制AngularJS applications的数据

      AngularJS控制器就是普通的JavaScript对象


    AngularJS控制器

      AngularJS applications通过控制器进行控制。

      ng-controller指令定义了一个application的控制器。

      一个控制器就是一个JavaScript对象,它可以通过标准的JavaScript对象构造函数来创建。

    <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>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.firstName = "John";
        $scope.lastName = "Doe";
    });
    </script>

    运行

    代码解释:

      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。

      控制器也可以包含方法(将函数赋值给变量):

    <div ng-app="myApp" 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 = "John";
        $scope.lastName = "Doe";
        $scope.fullName = function() {
            return $scope.firstName + " " + $scope.lastName;
        }
    });
    </script>

    运行


    将控制器放在外部文件中

      在大型应用中,常常会将控制器代码写在外部文件中。

      将<script>标签中的代码拷贝到personController.js外部文件中:

    <div ng-app="myApp" ng-controller="personCtrl">
    
    First Name: <input type="text" ng-model="firstName"><br>
    Last Name: <input type="text" ng-model="lastName"><br>
    <br>
    Full Name: {{firstName + " " + lastName}}
    
    </div>
    
    <script src="personController.js"></script>

    运行


    另一个例子

      创建一个新的控制器文件并命名为namesController.js:

    angular.module('myApp', []).controller('namesCtrl', function($scope) {
        $scope.names = [
            {name:'Jani',country:'Norway'},
            {name:'Hege',country:'Sweden'},
            {name:'Kai',country:'Denmark'}
        ];
    });

      然后再application中使用这个控制器文件:

    <div ng-app="myApp" ng-controller="namesCtrl">
    
    <ul>
      <li ng-repeat="x in names">
        {{ x.name + ', ' + x.country }}
      </li>
    </ul>
    
    </div>
    
    <script src="namesController.js"></script>

    运行

  • 相关阅读:
    bzoj 4012: [HNOI2015]开店
    POJ 1054 The Troublesome Frog
    POJ 3171 Cleaning Shifts
    POJ 3411 Paid Roads
    POJ 3045 Cow Acrobats
    POJ 1742 Coins
    POJ 3181 Dollar Dayz
    POJ 3040 Allowance
    POJ 3666 Making the Grade
    洛谷 P3657 [USACO17FEB]Why Did the Cow Cross the Road II P
  • 原文地址:https://www.cnblogs.com/jaxu/p/4487781.html
Copyright © 2011-2022 走看看