Angularjs -- 基本概念

angularjs旨在减轻使用AJAX开发应用程序的复杂度,使得程序的创建、测试、扩展和维护变得容易。下面是angularjs中的一些核心概念。

1. 客户端模板

多页面的应用通过组装和拼接服务器上的数据来生成HTML,然后输出到浏览器。Angularjs不同于此的是,传递模板和数据到浏览器,然后在浏览器端进行组装。浏览器的角色编程了只提供模板的静态资源和模板所需要的数据。

hello.html

<html ng-app>
<head>
<script src="angular.js"></script>
<script src="controllers.js"></script>
</head>
<body>
<div ng-controller='HelloController'>
<p>{{greeting.text}}, World</p>
</div>
</body>
</html>

controllers.js

function HelloController($scope) {
    $scope.greeting = { text: 'Hello' };
}

2. 模型  视图  控制器(MVC)

MVC的核心概念是,在代码之间明确分离管理数据(模型),应程序逻辑(控制器),并将数据呈现给用户(视图)。在Angular应用中,视图就是DOM,控制器就是Javascript类,模型数据存储在对象属性中。

3. 数据绑定

典型的DOM操作,都是先将数据处理完毕之后,再通过元素上设置innerHTML将结果插入到所要的DOM中。这样的工作重复性很高,还要确保界面和javascript属性中获取到数据时正确的状态。

而Angular中包括这中功能,仅仅声明界面的某一部分银蛇到Javascript的属性,让它们自动完成同步。

<html ng-app>
<head>
<script src="angular.js"></script>
<script src="controllers.js"></script>
</head>
<body>
<div ng-controller='HelloController'>
<input ng-model='greeting.text'>
<p>{{greeting.text}}, World</p>
</div>
</body>
</html>

controllers.js

function HelloController($scope) {
    $scope.greeting = { text: 'Hello' };
}

input的值(用户的输入)与greeting.text绑定在一起,并及时呈现在<p>中。绑定是双向的,也可用通过设置$scope.greeting.text的值,并自动同步到输入框和双大括号({{}})中

4. 依赖注入

$scope对象吧数据绑定自动通过HelloController构造函数传递给开发者,$scope并不是我们唯一需要的,还可以添加一个$location对象,如:

function HelloController($scope, $location) {
$scope.greeting = { text: 'Hello' };
// use $location for something good here...
}

通过Angular的依赖注入系统,我们能够遵循迪米特法则(最少知识原则),只关注我们最需要的部分。

5. 指令

Angular包括一个强大的DOM转换引擎,使得开发者有能力扩展HTML语法。在之前的实例中我们看到{{}}是用绑定数据的,ng-controller是用来指定哪个控制器来服务哪个视图,ng-model将一个输入框绑定到模型部分。我们称之为HTML扩展指令。

Angular包含很多标识符来定义视图,这些标识符可以定义常见的视图作为模板。除此之外,开发者还可以编写自己的标识符来扩展HTML模板。

购物车示例:

<!DOCTYPE html>
<html ng-app>
<head>
    <title>Your Shopping Cart</title>
</head>
<body ng-controller='CartController'>
<h1>Your Order</h1>

<div ng-repeat='item in items'>
    <span ng-bind="item.title"></span>
    <input ng-model='item.quantity'/>
    <span ng-bind="item.price | currency"></span>
    <span ng-bind="item.price * item.quantity | currency"></span>
    <button ng-click="remove($index)">Remove</button>
</div>
<script src="../js/angular-1.2.2/angular.js"></script>
<script>
    function CartController($scope) {
        $scope.items = [
            {title: 'Paint pots', quantity: 8, price: 3.95},
            {title: 'Polka dots', quantity: 17, price: 12.95},
            {title: 'Pebbles', quantity: 5, price: 6.95}
        ];
        $scope.remove = function (index) {
            $scope.items.splice(index, 1);
        }
    }
</script>
</body>
</html>
<html ng-app>

ng-app告诉Angular管理页面的那一部分。根据需要ng-app也可以放在<div>上

<body ng-controller="CartController">

Javascript类叫做控制器,它可以管理相应页面区域中的任何东西。

<div ng-repeat="item in items">

ng-repeat代表为items数组中每个元素拷贝一次该DIV中的DOM,同时设置item作为当前元素,并可在模板中使用它。

<span>{{item.title}}</span>

表达式{{item.title}}检索迭代中的当前项,并将当前项的title属性值插入到DOM中

<input ng-model="item.quantity">

ng-model定义输入字段和item.quantity之间的数据绑定

<span>{{item.price | currency}}</span>

<span>{{item.price * item.quantity | currency}}</span>

单价和总价格式化成美元形式。通过Angular的currency过滤器进行美元形式的格式化。

<button ng-click="remove($index)"> Remove </button>

通过ng-repeat的迭代顺序$index,移除数据和相应的DOM(双向绑定特性)

function CartController($scope) {

CartController 管理这购物车的逻辑,$scope 就是用来把数据绑定到界面上的元素

$scope.items = [ {title: ‘Paint pots‘, quantity: 8, price: 3.95}, {title: ‘Polka dots‘, quantity: 17, price: 12.95}, {title: ‘Pebbles‘, quantity: 5, price: 6.95} ];

通过定义$scope.items,我们已经创建一个虚拟数据代表了用户购物车中物品集合,购物车是不能仅工作在内存中,也需要通知服务器端持久化数据。

$scope.remove = function(index) {$scope.items.splice(index, 1);};

remove()函数能够绑定到界面上,因此我们也把它增加到$scope 中

时间: 2024-12-19 08:05:03

Angularjs -- 基本概念的相关文章

Angularjs -- 核心概念

angularjs旨在减轻使用AJAX开发应用程序的复杂度,使得程序的创建.測试.扩展和维护变得easy.以下是angularjs中的一些核心概念. 1. client模板 多页面的应用通过组装和拼接server上的数据来生成HTML,然后输出到浏览器.Angularjs不同于此的是,传递模板和数据到浏览器,然后在浏览器端进行组装.浏览器的角色编程了仅仅提供模板的静态资源和模板所须要的数据. hello.html <html ng-app> <head> <script sr

AngularJS基础概念

作用域.控制器.指令 作用域 应用的作用域是和应用的数据模型相关联的,同时作用域也是表达式执行的上下文.$scope对象是定义应用业务逻辑.控制器方法和视图属性的地方. 作用域是应用状态的基础.基于动态绑定,我们可以依赖视图在修改数据时立刻更新$scope,也可以依赖$scope在其发生变化时立刻重新渲染视图. AngularJS将$scope设计成和DOM类似的结构,因此$scope可以进行嵌套,也就是说可以引用父级$scope中的属性. 作用域提供了监视数据模型变化的能力.它允许开发者使用其

angularjs基本概念和用法之服务

一.服务 服务提供了一种能在应用的整改生命周期内保持数据的方法,它能够在控制器之间进行通信,并保持数据的一致性. 1.服务是一个单例对象,在每个应用中只会被实例化一次(被$injector): 2.服务提供了把与特定功能相关连的方法集中在一起的接口,实际中用于封装通用方法,请求后台数据,处理数据返回给控制器: 3.服务被注册后就可以引用它,并在运行时把它当做依赖加载进来. 二.创建服务的5种方式 1.factory服务 factory()方法是创建和配置服务的最快捷方式. app.factory

ReactJS 与 Domcom 比较 -- domcom 好在哪里?

在John Resig设计的jQuery独霸前端javascript多年之后,Google推出的重量级AngularJS给前端开发带来巨大的观念变化,给人耳目一新之感,同时也推动前端的观念.技术和框架领域进入快速迭代,百花齐放的局面.长江后浪推前浪,AngularJS还在浪涛之巅,facebook推出的ReactJS又异军突起,再次给前端Web应用开发的思路带来巨大转变,颠覆了很多刚刚成为时尚的观念.然而ReactJS依然存在很大的问题,而Domcom做到了去繁就简,成为一个非常简洁优雅的框架,

走进AngularJs(一)angular基本概念的认识与实战

一.前言 前端技术的发展是如此之快,各种优秀技术.优秀框架的出现简直让人目不暇接,作为一名业界新秀,紧跟时代潮流,学习掌握新知识自然是不敢怠慢.当听到AngularJs这个名字并知道是google在维护它时,便一直在关注,看到其在国外已经十分火热,可是国内的使用情况却有不小的差距,参考文献/网络文章也很匮乏.朝思暮想良久,决定深入学习angular,并写系列博客,一方面作为自己学习路程上的记录,另一方面也给有兴趣的同学一些参考. 首先我自己是一名学习者,会以学习者的角度来整理我的行文思路,故该系

Angularjs的核心概念

1. 客户端模板 多页面的应用通过组装和拼接服务器上的数据来生成HTML,然后输出到浏览器.Angularjs不同于此的是,传递模板和数据到浏览器,然后在浏览器端进行组装.浏览器的角色编程了只提供模板的静态资源和模板所需要的数据. <html ng-app> <head> <script src="angular.js"></script> <script src="controllers.js"><

前端 初识angularJS的基本概念

今天在这里分享分享我个人学习angular的知识点总结.在还没有接触到angular的时候,还真的不知道它到底有什么作用,直到我开始学习它,并且运用到它的时候,才知道angular这么强大.作为一个前端开发人员,我们要对新知识不断地学习,不断的充电,对待新知识不断地渴望,学习新技术是我们每一位程序员的必备功课,这样我们才不会被潮流淘汰掉.希望今后的日子里,能和各位博友和大神们在技术上共勉! 什么是angularJS? 它是一个用于设计动态web应用的结构框架,首先它是一个框架,不是像Query这

《AngularJS深度剖析与最佳实践》笔记: 第二章 概念介绍

第二章 概念介绍 2.1 什么是UI? 用户界面包括内容(静态信息+动态信息), 外观, 交互. 在前端技术栈中分别由HTML, CSS和JS负责. 进一步抽象, 分别对应于MVC三个主要部分: Model, View和Controller 对应到AngularJS中,  内容: 静态内容---模板 动态内容---scope 交互---Controller 外观 CSS----样式 filter----格式 2.2. 模块(module) 模块: 把相关的一组编程元素(如类, 函数, 变量等)组

angularjs(一)基础概念

一.前言 前端技术的发展是如此之快,各种优秀技术.优秀框架的出现简直让人目不暇接,作为一名业界新秀,紧跟时代潮流,学习掌握新知识自然是不敢怠慢.当听到AngularJs这个名字并知道是google在维护它时,便一直在关注,看到其在国外已经十分火热,可是国内的使用情况却有不小的差距,参考文献/网络文章也很匮乏.朝思暮想良久,决定深入学习angular,并写系列博客,一方面作为自己学习路程上的记录,另一方面也给有兴趣的同学一些参考. 首先我自己是一名学习者,会以学习者的角度来整理我的行文思路,故该系