(4)AngularJS 1.X 之控制器
2017-02-06 15:35
183 查看
引言
AngularJS之控制器
1 ng-init指令创建变量
11 代码实现
12 运行结果
13 代码解释
2 通过控制器赋值变量
21 代码实现
22 代码解释
3 控制器产生作用域
31 代码实现
32 代码解释
2.
2.1
在说控制器之前我们先看看,如果没有控制器,我们应该如何赋值我们的变量呢?在第一篇博客中我们说了一个指令叫做
然后我们给test变量赋值字符串
然后我们通过表达式输出test的变量
指定我们的
使用
然后我们使用代码定义我们的变量
运行结果
关注控制器的第二个参数对象
我们的控制器代码
运行结果
我们在
我们在
我们的控制器会形成一个树状图,我们通过树状图查找变量,直到查找到为止,如果最终什么都没查找到那么就什么也不会输出。
最重要的一条,在
AngularJS之控制器
1 ng-init指令创建变量
11 代码实现
12 运行结果
13 代码解释
2 通过控制器赋值变量
21 代码实现
22 代码解释
3 控制器产生作用域
31 代码实现
32 代码解释
1.引言
在起初我们就说过AngularJS基于MVC的实现,在开发过程中我们是将
controller和
view分离的,在此篇博客中我们就来看看如果在
AngularJS中实现控制器。
2.AngularJS
之控制器
2.1 ng-init
指令创建变量
在说控制器之前我们先看看,如果没有控制器,我们应该如何赋值我们的变量呢?在第一篇博客中我们说了一个指令叫做ng-init,通过该指令我们可以创建我们的变量。
2.1.1 代码实现
<body ng-init="test='a'"> {{test}} </body>
2.1.2 运行结果
2.1.3 代码解释
我们通过ng-init指令创建了一个变量,叫做test然后我们给test变量赋值字符串
a
然后我们通过表达式输出test的变量
2.2 通过控制器赋值变量
在上面的例子中存在明显的缺陷,缺陷就是html是我们的view,应该仅仅负责页面的显示,不应该参与过多的控制代码:例如创建变量等等,创建变量应该存在我们的控制器中,在AngularJS中使用
ng-controller指令创建我们的控制器,在
AngularJS中控制器的实现是一个
function对象,接下来我们就来看一下如何实现控制器。
2.2.1 代码实现
首先引入我们的AngularJS函数库(省略)
指定我们的
AangularJS作用域(注意我们的
ng-app指定为
myApp)
<html ng-app="myApp"> <head> </head> <body> </body> </html>
使用
ng-controller指令指定我们控制器(注意我们的控制器名称为:
firstController)
<div ng-controller="firstController"> {{test}} </div>
然后我们使用代码定义我们的变量
test
<script> var app=angular.module("myApp",[]) app.controller("firstController",function($scope){ $scope.test="第一个控制器"; }) </script>
运行结果
2.2.2 代码解释
angular.module("myApp",[])方法有两个参数,第一个参数是模块的名称,对应着
ng-app指令对应的值,第二个参数是模块的依赖,此处为空,这个参数在使用插件的时候会指定,在模块化编程当中也会使用。
var app=angular.module("myApp",[])的返回值为当前模块,我们赋值为变量
app
app.controller()方法有两个参数,第一个参数是控制器的名称,对应着
ng-controller指令,每一个
ng-controller指令都应有着
function对象
关注控制器的第二个参数对象
function,函数对象有一个
$scope参数,这个参数不能修改,必须写成
$scope,我们通过给
$scope对象添加了一个
test参数,相当于在
controller作用域中添加了一个
test对象
$scope对象其实是一个服务,也就是
service,关于
service的介绍我们将在以后说。
2.3 控制器产生作用域
在这里我们看一下AngularJS中控制器产生的作用域,话不多少,看一下下面的代码实例。
2.3.1 代码实现
我们的html标签
<body ng-init="test='ng-init'"> <div ng-controller="firstController"> {{test}} <div ng-controller="thirdController"> {{test}} </div> <div ng-controller="forthController"> {{test}} </div> </div> <div ng-controller="secondController"> {{test}} </div> </body>
我们的控制器代码
var app=angular.module("myApp",[]) app.controller("firstController",function($scope){ $scope.test="firstController"; }) app.controller("thirdController",function($scope){ $scope.test="thirdController"; }) app.controller("secondController",function($scope){ }) app.controller("forthController",function($scope){ })
运行结果
2.3.2 代码解释
我们首先看一下html标签的结构
我们在
forthController输出test变量,因为
forthController没有test变量,所以向上查找,找到
firstController控制器,所以输出
firstController
我们在
secondController输出test变量,因为
secondController没有test变量,所以向上查找,找到
body标签,
body标签定义了test变量,所以输出
ng-init。
我们的控制器会形成一个树状图,我们通过树状图查找变量,直到查找到为止,如果最终什么都没查找到那么就什么也不会输出。
最重要的一条,在
AngularJS中,我们的变量的作用域是基于控制器的,一般在写html页面的时候,我们定义我们的控制器,在控制器中定义我们的变量,然后输出。
相关文章推荐
- angularjs控制器之间通信机制,兄弟间通信
- 菜鸟AngularJS学习之路 【第二天】。(事件绑定指令 循环输出 控制器嵌套)
- AngularJs (指令与控制器)
- AngularJS快速入门3--控制器
- angularjs 1.x自定义指令之控制器与指令间的通讯
- AngularJS 控制器
- angularJS控制器controller之间的3种通信方式
- 第一个AngularJS控制器
- angularJs在多个控制器中共享服务数据
- angularJS 第一天 使用模型与控制器绑定数据
- AngularJS控制器controller正确的通信的方法
- angularjs学习笔记-正确的使用控制器
- AngularJs学习笔记2-控制器、数据绑定、作用域
- AngularJS 控制器
- AngularJS 控制器
- AngularJS - 控制器
- AngularJS入门-(7)控制器
- AngularJS中的控制器示例
- AngularJS开发教程之控制器之间的通信方法分析
- angularjs指令系统系列课程(5):控制器controller