AngularJS入门教程之控制器详解


Posted in Javascript onJuly 27, 2016

AngularJS 控制器

AngularJS 控制器 控制 AngularJS 应用程序的数据。

 AngularJS 控制器是常规的 JavaScript 对象。

AngularJS 控制器

AngularJS 应用程序被控制器控制。

ng-controller 指令定义了应用程序控制器。

控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建。

AngularJS 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="personCtrl">

名: <input type="text" ng-model="firstName"><br>
姓: <input type="text" ng-model="lastName"><br>
<br>
姓名: {{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>

</body>
</html>

运行结果:

名:
姓:

姓名: John Doe

AngularJS 应用程序由 ng-app 定义。应用程序在 <div> 内运行。

ng-controller="myCtrl" 属性是一个 AngularJS 指令。用于定义一个控制器。

myCtrl 函数是一个 JavaScript 函数。

AngularJS 使用$scope 对象来调用控制器。

在 AngularJS 中, $scope 是一个应用象(属于应用变量和函数)。

控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。

控制器在作用域中创建了两个属性 (firstName 和 lastName)。

ng-model 指令绑定输入域到控制器的属性(firstName 和 lastName)。

控制器方法

上面的实例演示了一个带有 lastName 和 firstName 这两个属性的控制器对象。

控制器也可以有方法(变量和函数):

AngularJS 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="personCtrl">

名: <input type="text" ng-model="firstName"><br>
姓: <input type="text" ng-model="lastName"><br>
<br>
姓名: {{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>

</body>
</html>

运行效果:

名: 
姓: 

姓名: John Doe

外部文件中的控制器

在大型的应用程序中,通常是把控制器存储在外部文件中。

只需要把 <script> 标签中的代码复制到名为 personController.js 的外部文件中即可:

AngularJS 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="personCtrl">

名: <input type="text" ng-model="firstName"><br>
姓: <input type="text" ng-model="lastName"><br>
<br>
姓名: {{firstName + " " + lastName}}

</div>

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

</body>
</html>

运行结果:

名: 
姓: 

姓名: John Doe

其他实例

以下实例创建一个新的控制器文件:

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

保存文件为  namesController.js:

然后,在应用中使用控制器文件:

AngularJS 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<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>

</body>
</html>

运行效果:

  • Jani, Norway
  • Hege, Sweden
  • Kai, Denmark

以上就是对AngularJS 控制器资料的整理,后续继续补充。

Javascript 相关文章推荐
javascript 多级checkbox选择效果
Aug 20 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
Sep 28 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
Sep 18 Javascript
JavaScript中对JSON对象的基本操作示例
May 21 Javascript
Jquery获取第一个子元素简单实例
Jun 02 Javascript
使用JavaScript获取URL中的参数(两种方法)
Nov 16 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
js实现产品缩略图效果
Mar 10 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
vue+element-ui实现表格编辑的三种实现方式
Oct 31 Javascript
JS实现页面鼠标点击出现图片特效
Aug 19 Javascript
原生js+css实现tab切换功能
Sep 17 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
Jul 27 #Javascript
AngularJS入门教程之Scope(作用域)
Jul 27 #Javascript
AngularJS入门之动画
Jul 27 #Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
Jul 27 #Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 #Javascript
AngularJS 模型详细介绍及实例代码
Jul 27 #Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
Jul 27 #Javascript
You might like
配置支持SSI
2006/11/25 PHP
PHP 防注入函数(格式化数据)
2011/08/08 PHP
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
PHP删除数组中空值的方法介绍
2014/04/14 PHP
jQuery Tools tab使用介绍
2012/07/14 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
Python多进程分块读取超大文件的方法
2016/04/13 Python
基于python select.select模块通信的实例讲解
2017/09/21 Python
django2 快速安装指南分享
2018/01/05 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
终端业务员岗位职责
2013/11/27 职场文书
园艺师求职信
2014/04/27 职场文书
2014和解协议书范文
2014/09/15 职场文书
公证处委托书
2015/01/28 职场文书
追讨欠款律师函
2015/06/24 职场文书
清明节主题班会
2015/08/14 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
四则混合运算教学反思
2016/02/23 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python