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中OnLoad几种使用方法
Dec 15 Javascript
jQuery弹出(alert)select选择的值
Apr 21 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
Oct 16 Javascript
浅析JS异步加载进度条
May 05 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
Oct 13 Javascript
原生JS实现的放大镜效果实例代码
Oct 15 Javascript
Javascript实现数组中的元素上下移动
Apr 28 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
vue同步父子组件和异步父子组件的生命周期顺序问题
Oct 07 Javascript
对layui初始化列表的CheckBox属性详解
Sep 13 Javascript
JS 创建对象的模式实例小结
Apr 28 Javascript
Vue发布订阅模式实现过程图解
Apr 30 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
第八节--访问方式
2006/11/16 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
对象的类型:本地对象(1)
2006/12/29 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
页面使用密码保护代码
2013/04/10 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
js实现随机抽奖
2020/03/19 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
在Python中使用Neo4j数据库的教程
2015/04/16 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
幼儿教师思想汇报
2014/01/10 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python
Android中的Launch Mode详情
2022/06/05 Java/Android