详解AngularJS控制器的使用


Posted in Javascript onMarch 09, 2016

控制器在Angularjs中的作用是增强视图,它实际就是一个函数,用来向视图中的作用域添加额外的功能,我们用它来给作用域对象设置初始状态,并添加自定义行为。

当我们在页面上创建一个控制器时,Angularjs会生成并传递一个$scope给这个控制器,由于Angularjs会自动实例化控制器,所以我们只需要写构造函数即可。下面的例子展示了控制器初始化:

function my Controller($scope){
 $scope.msg="hello,world!"; 
}

上面这个创建控制器的方法会污染全局命名空间,更合理的办法是创建一个模块,然后在模块中创建控制器,如下:

var myApp=angular.module("myApp",[]);
myApp.controller("myController",function($scope){
 $scope.msg="hello,world!";
})

用内置指令ng-click可以将按钮、链接等其他任何DOM元素同点击事件进行绑定。ng-click指令将浏览器中的mouseup事件,同设置在DOM元素上的事件处理程序绑定在一起(例如,当浏览器在某个DOM元素上触发了点击事件,函数就会被调用)。和前面的例子类似,绑定看起来是这样的:

<div ng-controller="FirstController">
<h4>The simplest adding machine ever</h4>
<button ng-click="add(1)" class="button">Add</button>
<a ng-click="subtract(1)" class="button alert">Subtract</a>
<h4>Current count: {{ counter }}</h4>
</div>

按钮和链接都被绑定在了内部$scope的一个操作上,当点击任何一个元素时AngularJS都会调用相应的方法。注意,当设置调用哪个函数时,会同时用括号传递一个参数(add(1))

app.controller('FirstController', function($scope) {
$scope.counter = 0;
$scope.add = function(amount) { $scope.counter += amount; };
$scope.subtract = function(amount) { $scope.counter -= amount; };
});

Angularjs与其他框架的最大区别在于,控制器并不适合来执行DOM操作、格式化或数据操作,以及除存储数据模型之外的状态维护操作,它只是视图和$scope之间的桥梁。

控制器嵌套(作用域包含作用域)

AngularJS应用的任何一个部分,无论它渲染在哪个上下文中,都有父级作用域存在。对于ng-app所处的层级来讲,它的父级作用域就是$rootScope。

默认情况下,AngularJS在当前作用域中无法找到某个属性时,便会在父级作用域中进行查找。如果AngularJS找不到对应的属性,会顺着父级作用域一直向上寻找,直到抵达$rootScope为止。如果在$rootScope中也找不到,程序会继续运行,但视图无法更新。

通过例子来看一下这个行为。创建一个ParentController,其中包含一个user对象,再创建一个ChildController来引用这个对象:

app.controller('ParentController', function($scope) {
$scope.person = {greeted: false};
});
app.controller('ChildController', function($scope) {
$scope.sayHello = function() {
$scope.person.name = 'Ari Lerner';
};
});

如果我们将ChildController置于ParentController内部,那ChildController的$scope对象的父级作用域就是ParentController的$scope对象。根据原型继承的机制,我们可以在子作用域中访问ParentController的$scope对象。

<div ng-controller="ParentController">
<div ng-controller="ChildController">
<a ng-click="sayHello()">Say hello</a>
</div>
{{ person }}
</div>

以上就是本文的全部内容,希望对大家的学习有所帮助,帮助大家熟悉AngularJS控制器。

Javascript 相关文章推荐
JQuery表格内容过滤的实现方法
Jul 05 Javascript
jQuery实现的多选框多级联动插件
May 02 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
Aug 21 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
Dec 10 Javascript
javascript正则表达式定义(语法)总结
Jan 08 Javascript
原生js实现键盘控制div移动且解决停顿问题
Dec 05 Javascript
javascript 操作cookies详解及实例
Feb 22 Javascript
jqgrid实现简单的单行编辑功能
Sep 30 Javascript
vue中使用refs定位dom出现undefined的解决方法
Dec 21 Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 Javascript
js+css3实现炫酷时钟
Aug 18 Javascript
nestjs返回给前端数据格式的封装实现
Feb 22 Javascript
JQuery Mobile实现导航栏和页脚
Mar 09 #Javascript
javascript基本算法汇总
Mar 09 #Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 #Javascript
javascript获取wx.config内部字段解决微信分享
Mar 09 #Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
Mar 09 #Javascript
jquery实现文本框textarea自适应高度
Mar 09 #Javascript
分享12个实用的jQuery代码片段
Mar 09 #Javascript
You might like
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
javascript实现时钟动画
2020/12/03 Javascript
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
django+mysql的使用示例
2018/11/23 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
Python学习之os模块及用法
2020/06/03 Python
毕业生造价工程师求职信
2013/10/17 职场文书
高三生物教学反思
2014/01/25 职场文书
普通话宣传标语
2014/06/26 职场文书
岗位职责说明书模板
2014/07/30 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
老干部工作汇报材料
2014/10/28 职场文书
2014年团支部工作总结
2014/11/17 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
西柏坡导游词
2015/02/05 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Go语言基础知识点介绍
2021/07/04 Golang