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 放大镜 移动镜片效果代码
May 09 Javascript
jquery.mobile 共同布局遇到的问题小结
Feb 10 Javascript
javascript拖拽应用实例
Mar 25 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
May 03 Javascript
使用React实现轮播效果组件示例代码
Sep 05 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
Mar 29 Javascript
Vue.js上下滚动加载组件的实例代码
Jul 17 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
vue生成文件本地打开查看效果的实例
Sep 06 Javascript
vue项目出现页面空白的解决方案
Oct 31 Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 08 Javascript
JavaScript undefined及null区别实例解析
Jul 21 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
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
python实现的jpg格式图片修复代码
2015/04/21 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
初中生学习生活的自我评价
2013/11/20 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
微笑服务演讲稿
2014/05/13 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
2016年暑期见闻作文
2015/11/25 职场文书