angular.js介绍

1.什么是Angular.js?

Angular.js官方文档给出的定义:完全使用JavaScript编写的客户端技术。同其他历史悠久的Web技术(HTML、CSS和JavaScript)配合使用,使Web应用开发比以往更简单、更快捷。AngularJS使开发Web应用变得非常简单,同时也降低了构建复杂应用的难度。它提供了开发者在现代Web应用中经常要用到的一系列高级功能,例如:解耦应用逻辑、数据模型和视图;——Ajax服务;——依赖注入;——浏览历史(使书签和前进、后退按钮能够像在普通Web应用中一样工作);——测试;——更多功能。

2.一个简单的例子:hello world

<!DOCTYPE html>
<html ng-app>
<head>  
<title>Simple app</title>  
<script    src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.js"></script>
</head>
<body>  
<input ng-model="name" type="text" placeholder="Your name">  
<h1>Hello {{ name }}</h1>
</body>
</html>


这个例子展示了angular.js最基本的功能:数据绑定。

使用angular.js的方式:在HTML页面中引用angular.js,并在某个DOM元素上明确设置ng-app属性即可。ng-app属性声明所有被其包含的内容都属于这个AngularJS应用,这也是我们可以在Web应用中嵌套AngularJS应用的原因。只有被具有ng-app属性的DOM元素包含的元素才会受Angu-larJS影响。

数据模型对象(model object)是指$scope对象。$scope对象是一个简单的JavaScript对象,其中的属性可以被视图访问,也可以同控制器进行交互。

双向数据绑定(bi-directional)意味着如果视图改变了某个值,数据模型会通过脏检查观察到这个变化,而如果数据模型改变了某个值,视图也会依据变化重新渲染。

在输入字段上使用ng-model指令来实现数据绑定。

如下所示:

<input ng-model="person.name" type="text" placeholder="Yourname">
<h1>Hello{{ person.name }}</h1>

这样绑定就设置好了。我们可以观察一下视图是如何更新数据模型的。当输入字段中的值发生变化时,person.name会被更新,而视图将反映出这个更新。我们仅通过视图就实现了一个双向数据绑定。

正如ng-app声明所有被它包含的元素都属于AngularJS应用一样,DOM元素上的ng-controller声明所有被它包含的元素都属于某个控制器。为了解释这个概念,我们将前面的例子修改成如下的样子:

<div ng-controller='MyController'>    
<input ng-model="person.name" type="text" placeholder="Your name">    
<h1>Hello {{ person.name }}</h1>
</div>

3.一个稍微复杂一点的例子

我们创建一个每秒钟走一步的时钟(时钟通常都是这样的),并更新clock变量上的数据:在这个例子中,MyController函数接受两个参数,即该DOM元素的$scope和$timeout。

<!doctype html>
<html ng-app>
  <head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js"></script>
  </head>
  <body>
    <div ng-controller="MyController">
      <h1>Hello {{ clock }}!</h1>
    </div>
    <script type="text/javascript">
      function MyController($scope) {
        $scope.clock = new Date();
        var updateClock = function() {
          $scope.clock = new Date();
        };
        setInterval(function() {
          $scope.$apply(updateClock);
        }, 1000);
        updateClock();
      };
    </script>
  </body>
</html>
实现js代码的分离:
尽管我们可以将所有代码都写在一个文件中,但由于需要将不同的组件分开开发,将代码写在一个文件中会使协同工作变得非常困难。通常情况下,更好的选择是将JavaScript放在单独的文件中,而不是index.html中。我们将script部分放入一个叫app.js中。由于JavaScript自身的特点,以及它在传递值和引用时的不同处理方式,通常认为,在视图中通过对象的属性而非对象本身来进行引用绑定,是Angular中的最佳实践。如果把这个最佳实践应用到上面时钟的例子中,需要把视图中的代码改写成下面这样:

<h1>Hello {{ clock.now }}!</h1>
在app.js中:

function MyController($scope, $timeout) {    
	var updateClock = function() {        
		$scope.clock = {            
			now: new Date()        
		};        
		$timeout(function() {          
			updateClock();        
		}, 1000);    
	};    
	updateClock();
};

将所有绑定都通过这样的形式放在视图中,是个非常好的主意。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值