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 相关文章推荐
JS localStorage实现本地缓存的方法
Jun 22 Javascript
javascript实现TreeView 无刷新展开的实例代码
Jul 13 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
Apr 04 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 Javascript
js进行表单验证实例分析
Feb 10 Javascript
javascript的 {} 语句块详解
Feb 27 Javascript
jQuery改变form表单的action,并进行提交的实现代码
May 25 Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 Javascript
React学习笔记之高阶组件应用
Jun 02 Javascript
微信小程序页面间值传递的两种方法
Nov 26 Javascript
mui js控制开关状态、修改switch开关的值方法
Sep 03 Javascript
原生js实现二级联动菜单
Nov 27 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
phpfans留言版用到的install.php
2007/01/04 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
解决Python requests 报错方法集锦
2017/03/19 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
户外用品商店创业计划书
2014/01/29 职场文书
道路交通安全实施方案
2014/03/12 职场文书
python开发飞机大战游戏
2021/07/15 Python