AngularJs学习笔记(2)--控制器和ng-bind

10 篇文章 0 订阅


http://xlows.blog.51cto.com/5380484/1425255


(1)控制器

在angular中控制器随处可见,控制器在MVC里面主要是做控制业务逻辑,控制model的数据。


例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
< html >
< head >
     < meta  charset = "utf-8" >
</ head >
< body >
     < div  ng-app = "" >
 
         < div  ng-controller = "firstController" >
             < input  type = "text"  value = ""  ng-model = "name" />
             < input  type = "text"  value = ""  ng-model = "age" />
             {{name}}
             {{age}}
         </ div >
     </ div >
     < script  type = "text/javascript"  src = "app/index.js" ></ script >
< script  type = "text/javascript"  src = "../../vendor/angular/angularjs.js" ></ script >
</ body >
</ html >

可以看到div下,有一个ng-controller的指令,里面的firstController可以暂时理解为angular的表达式,它会去找firstController的变量。我们可以在index.js的文件里声明这个变量。

1
2
3
4
5
6
7
8
9
var  firstController =  function ($scope){
 
     // $scope 我们叫做作用域
     // 申明一个Model
     $scope.name =  '张三' ;
 
     $scope.age = 20;
 
}

在function中必须写成$scope,这是angular的依赖注入,他是angular的一个作用域,是管理控制器的,它也可以向外找,最上层有一个rootscope。

wKiom1OZFa6Q9TtXAAAecl4alJ0497.jpg


运行后可以看到此时name为张三,age为20,如果修改了任意一个,label也会改变,这就是上节所说的双向绑定。


(2)ng-bind

继续看下上面的代码,如果angular没加载完而页面已经渲染了,那会是什么样呢?

wKiom1OZFgyh5ag_AAAgQkYagok580.jpg

可以看到{{name}}和{{age}}会直接在页面上显示出来,当angular加载完后,数据马上会渲染上去。

模拟一下从服务器下载angular的过程,我们在页面中加一行alert代码。

1
2
3
     <script>
         alert(3);
     </script>

wKiom1OZFt-xmGLkAABXfRWScGY665.jpg可以看到在alert的时候页面上会显示用户不需要的东西,此时就可以用到ng-bind。

ng-bind是angular的一个指令。我们可以把html页面修改成如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
< html >
< head >
     < meta  charset = "utf-8" >
</ head >
< body >
     < div  ng-app = "" >
 
         < div  ng-controller = "firstController" >
             < input  type = "text"  value = ""  ng-model = "name" />
             < input  type = "text"  value = ""  ng-model = "age" />
             < div  ng-bind = "name" ></ div >
             < div  ng-bind = "age" ></ div >
         </ div >
     </ div >
     < script >
         alert(3);
     </ script >
     < script  type = "text/javascript"  src = "app/index.js" ></ script >
< script  type = "text/javascript"  src = "../../vendor/angular/angularjs.js" ></ script >
 
 
</ body >
</ html >

这样才运行的时候就不会渲染用户不需要的东西

wKiom1OZF7nwVct3AABLLdeXUWM876.jpg点击确定后,会加载model中的数据:

wKioL1OZF8KhfWNSAAAcgG9UBF0864.jpg

通过审查页面元素,可以看到,ng-bind还为model自动添加了一个classwKioL1OZGB_Qrd6RAAD-QqcKcMM251.jpg

因此两个label会在下一行显示。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值