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 相关文章推荐
jQuery选中select控件 无法设置selected的解决方法
Sep 01 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
Jul 22 Javascript
jquery获取url参数及url加参数的方法
Oct 26 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
Nov 17 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
Mar 13 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
Feb 14 jQuery
微信小程序登录session的使用
Mar 17 Javascript
小程序实现新用户判断并跳转激活的方法
May 20 Javascript
用webpack4开发小程序的实现方法
Jun 04 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
详解Angular cli配置过程记录
Nov 07 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 Vue.js
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
PHP爆绝对路径方法收集整理
2012/09/17 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
Yii2单元测试用法示例
2016/11/12 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
React快速入门教程
2017/01/17 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
js实现select下拉框选择
2020/01/11 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
详解Python pygame安装过程笔记
2017/06/05 Python
Python决策树分类算法学习
2017/12/22 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
周年庆典邀请函范文
2014/01/23 职场文书
优秀实习生感言
2014/03/01 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
学生检讨书怎么写
2015/05/07 职场文书
检讨书怎么写
2015/05/07 职场文书
乔迁新居祝福语
2019/11/04 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL