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延迟加载
Mar 09 Javascript
Expandable &quot;Detail&quot; Table Rows
Aug 29 Javascript
JS 退出系统并跳转到登录界面的实现代码
Jun 29 Javascript
jQuery中find()方法用法实例
Jan 07 Javascript
JavaScript与HTML的结合方法详解
Nov 23 Javascript
jQuery实现下拉加载功能实例代码
Apr 01 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
May 28 Javascript
angular.js分页代码的实例
Jul 27 Javascript
jQuery自制提示框tooltip改进版
Aug 01 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
Feb 22 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
May 04 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
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
基于Zend的Config机制的应用分析
2013/05/02 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
Python语言的12个基础知识点小结
2014/07/10 Python
web.py中调用文件夹内模板的方法
2014/08/26 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python2与Python3的区别详解
2020/02/09 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
数据库面试要点基本概念
2013/10/31 面试题
综合办公室主任岗位职责
2014/04/13 职场文书
农业开发项目建议书
2014/05/16 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
python实现过滤敏感词
2021/05/08 Python
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS