angularjs应用骨架(4)

  继续上一篇 继续了解angular其他内容。

 与服务器交互

  真正的应用需要和真实的服务器进行交互移动应用和新兴的Chrome桌面应用可能是例外。但是对于此外的所有应用来说,无论是想把数据持久化到云端还是需要其他用户进行实时交互,都需要让应用与服务器进行交互。

  为了实现这一点,angular提供了一种叫做$http的服务,它提供了一个可扩展的抽象方法列表,使得与服务器的交互更加容易。它支持HTTP、JSONP和CORS方式,它还包含了安全性支持,避免了JSON格式的脆弱性和跨站请求伪造(XSRF)。它让你可以轻松的转换请求和相应数据,甚至还实现了简单的缓存。例如,我们打算让购物站点从服务器上获取商品列表信息,而不是从内存假数据获取。例如我们已经写好了一个后台程序返回一段JSON格式数据:

  

 1 [
 2   {
 3     "id":0,
 4     "title":"羽毛球",
 5     "description":"李宁羽毛球,耐磨,轻便",
 6     "price":3.95
 7   },
 8   {
 9     "id":1,
10     "title":"羽毛球拍",
11     "description":"李宁羽毛球拍N77二代,耐磨,轻便",
12     "price":1200
13   },
14   {
15     "id":2,
16     "title":"羽毛球谢",
17     "description":"尤尼克斯羽毛球鞋,耐磨,轻便",
18     "price":300
19   }
20 ]

  我们可以像下面这样编写查询代码:

  

 1 !(function () {
 2    var app=angular.module(‘myHttpModule‘,[]);
 3     app.controller(‘shoppingController‘, function ($scope,$http) {
 4         $http.get(‘data/data1.json‘).success(function (data,status,headers,config) {
 5             $scope.Items=data;
 6         }).error(function (e) {
 7             alert(e)
 8         });
 9     });
10 }());

  然后在模版中这样使用它:

  

 1 <!DOCTYPE html>
 2 <html ng-app="myHttpModule">
 3 <head>
 4     <meta charset="UTF-8">
 5     <script src="static/js/angular.js" type="text/javascript"></script>
 6     <script src="static/app/controller/controller.js" type="text/javascript"></script>
 7 </head>
 8 <body>
 9     <div ng-controller="shoppingController">
10             <div ng-repeat="item in Items">
11                 <p>{{item.title}}</p>
12                 <p>{{item.description}}</p>
13                 <p>{{item.price | currency}}</p>
14             </div>
15     </div>
16 </body>
17 </html>

  在之后的连载中,我们在详细聊聊这种结构以及$http服务的各种功能。

  

 使用指令修改DOM

  指令扩展了HTML语法,同时也是使用自定义的元素和属性把行为和DOM转换关联到一起的方式。通过指令,你可以创建可服用的UI组件,配置你的应用,并且做到你能想象到的几乎所有的事情,这些事情都可以在你的模版中实现。

  你可以使用angular内置的指令来编写应用,但是也有遇到自己编写指令的情况。当你想要以某种方式处理浏览器事件或者修改DOM,而这些东西又没有内置指令可以支持时,你就会知道是时候深入理解指令体系了,你编写的代码将会位于你所编写的指令中,而不是控制器、服务或应用的其他地方。

  与服务一样,你可以通过模块来定义指令,只需要调用模块实例的directive()函数即可。

  var app=angular.module(‘myApp‘,[]);

  app.directive(‘name‘,directiveFunction);directiveFunction是一个指令工厂函数。

  

  autofocus是一个很好用的html5属性,但是对于不支持html5的牛郎妻来说要怎么才能在页面一打开的情况下就自动获取焦点呢?好,那么我们就来实现这样一个指令ng-auto

  模版页面:

  

1 <div ng-controller="autoFouceController">
2     <button ng-auto ng-click="clickMe()">
3         {{data.info}}
4     </button>
5 </div>

  

  脚本:

  

 1   app.controller(‘autoFouceController‘, function ($scope) {
 2         var data = {
 3             info: "hello,angular!"
 4         };
 5         $scope.data = data;
 6         $scope.clickMe = function () {
 7             $scope.data.info = "hello,world!";
 8         };
 9     });
10
11     app.directive(‘ngAuto‘, function () {
12         return {
13             restrict: ‘A‘,
14             link: function (scope, element, attrs, controller) {
15                 element[0].focus();
16             }
17         };
18     });

  

  效果图:

  

在以后的连载中,将会详细聊聊$http、$directive。

  

  

时间: 2024-10-19 14:24:48

angularjs应用骨架(4)的相关文章

用angularjs开发下一代web应用(二):angularjs应用骨架(一)

1.调用angularjs 1>加载angularjs库 可以从google的CDN(内容分发网络)中加载,获取快,并且可以在多个应用之间缓存脚本库(建议使用这种方式,但是中国的特殊国情,不能用这种方式): <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js"></script> 本地主机方式. 2>使用ng-app申明angular的边界

用angularjs开发下一代web应用(二):angularjs应用骨架(二)

1.浅谈非入侵式JavaScript <div ng-click="doSomething()">...</div>这些指令和原来的事件处理器有以下不同之处: 在所有浏览器中具有相同的行为.Angular将会帮你屏蔽差异性. 不会在全局命名空间中进行操作.你所指定的表达式只能访问元素控制器作用域范围内的函数和数据. 2.列表.表格以及其他迭代型元素         ng-repeat可能是最有用的Angular指令了,它可以根据集合中的项目一次创建一组元素的多份

angularjs应用骨架(2)

时隔一个星期,接着上一篇的angularjs应用骨架继续聊聊angularjs其他的其他的内容. 区分UI和控制器的职责 在应用控制器中有三种职责: 1.为应用中模型设置初始状态 2.通过$scope对象把数据模型和函数暴露给视图(UI模版) 3.监视模型其余部分的变化,并采取相应的动作 我这主要想说的是第三项的功能:为了让控制器保持小巧可控制的状态,我们的建议是,为视图中的每一块功能区域创建一个控制器.就是说如果你有一个菜单,就创建一个MenuController,如果你有一个面包屑导航就创建

angularjs应用骨架(3)

好,继续上一章节我们继续聊聊angularjs骨架.开发任何一款优秀的应用都会面临一项非常困难的工作,那就是找到一种合适的方式方法把代码组织在合适的功能范围内.我们已经看过控制器的处理方式,它会提供一块空间,把正确的数据模型和函数暴露给视图模版.但是用来支持我们应用的代码该怎么办呢?有一块最明显的可以放在这些代码的地方,那就是控制器的函数. 这种做法对于小型的应用和例子来说可以工作的很好,我们已经看到过很多这样的例子,但是在真实的应用中,这种做法很快就会使得代码无法维护.控制器将会变成一个垃圾场

angularjs应用骨架

使用典型的类库时,你可以选择并使用你所喜欢的功能:而对于angularjs框架来说,必须把它看成一个完成度套件来使用,框架中的所有的东西都包含在里面,接下来将会介绍angular的基础模块,这样你就可以理解它们是如何被装配在一起的. 调用Angular 为了使用angular,所有的引用都必须做两件事情: 1.加载angular库. 2.使用ng-app指令告诉angular应该管理DOM中的那一部分. 加载脚本 加载类库的操作非常简单,与其他javascript类库遵循同样的规则. 使用ng-

用AngularJS开发下一代Web应用 系列入门基础教程

开篇介绍 AngularJS是什么东西?我觉得不用再描述了.可自行去充电一下.按照惯例,让我们先看看一个Hello World的开门简介吧. <!doctype html> <html ng-app> <head> <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script> </head> <body> Your name

AngularJs 基础(60分钟入门)

AngularJs是一个不错的用于开发SPA应用(单页Web应用)的框架.单页Web应用(single page web application,SPA),就是只有一张Web页面的应用.浏览器一开始会加载必需的HTML.CSS和JavaScript,所有的操作都在这张页面上完成,由JavaScript来控制不同view在这个页面上的呈现.本文源于Youtube上一个不错的AngularJs的入门教程视频:AngularJS Fundamentals In 60-ish Minutes,主要讲解了

AngularJs 基础(60分钟入门) (转)

AngularJs是一个不错的用于开发SPA应用(单页Web应用)的框架.单页Web应用(single page web application,SPA),就是只有一张Web页面的应用.浏览器一开始会加载必需的HTML.CSS和JavaScript,所有的操作都在这张页面上完成,由JavaScript来控制不同view在这个页面上的呈现.本文源于Youtube上一个不错的AngularJs的入门教程视频:AngularJS Fundamentals In 60-ish Minutes,主要讲解了

AngularJS 中文资料+工具+库+Demo 大搜集

中文学习资料: 中文资料且成系统的就这么多,优酷上有个中文视频. http://www.cnblogs.com/lcllao/archive/2012/10/18/2728787.html   翻译的官方的Guide http://www.ituring.com.cn/minibook/303  翻译的官方的tutorial http://www.lovelucy.info/angularjs-best-practices.html  Angular最佳实践 http://zouyesheng.