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

 与服务器交互

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

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

  

 [
{
"id":0,
"title":"羽毛球",
"description":"李宁羽毛球,耐磨,轻便",
"price":3.95
},
{
"id":1,
"title":"羽毛球拍",
"description":"李宁羽毛球拍N77二代,耐磨,轻便",
"price":1200
},
{
"id":2,
"title":"羽毛球谢",
"description":"尤尼克斯羽毛球鞋,耐磨,轻便",
"price":300
}
]

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

  

 !(function () {
var app=angular.module('myHttpModule',[]);
app.controller('shoppingController', function ($scope,$http) {
$http.get('data/data1.json').success(function (data,status,headers,config) {
$scope.Items=data;
}).error(function (e) {
alert(e)
});
});
}());

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

  

 <!DOCTYPE html>
<html ng-app="myHttpModule">
<head>
<meta charset="UTF-8">
<script src="static/js/angular.js" type="text/javascript"></script>
<script src="static/app/controller/controller.js" type="text/javascript"></script>
</head>
<body>
<div ng-controller="shoppingController">
<div ng-repeat="item in Items">
<p>{{item.title}}</p>
<p>{{item.description}}</p>
<p>{{item.price | currency}}</p>
</div>
</div>
</body>
</html>

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

  

 使用指令修改DOM

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

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

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

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

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

  

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

  模版页面:

  

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

  

  脚本:

  

   app.controller('autoFouceController', function ($scope) {
var data = {
info: "hello,angular!"
};
$scope.data = data;
$scope.clickMe = function () {
$scope.data.info = "hello,world!";
};
}); app.directive('ngAuto', function () {
return {
restrict: 'A',
link: function (scope, element, attrs, controller) {
element[0].focus();
}
};
});

  

  效果图:

  

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

  

  

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

  1. angularjs应用骨架(2)

    时隔一个星期,接着上一篇的angularjs应用骨架继续聊聊angularjs其他的其他的内容. 区分UI和控制器的职责 在应用控制器中有三种职责: 1.为应用中模型设置初始状态 2.通过$scope ...

  2. angularjs应用骨架(3)

    好,继续上一章节我们继续聊聊angularjs骨架.开发任何一款优秀的应用都会面临一项非常困难的工作,那就是找到一种合适的方式方法把代码组织在合适的功能范围内.我们已经看过控制器的处理方式,它会提供一 ...

  3. angularjs应用骨架

    使用典型的类库时,你可以选择并使用你所喜欢的功能:而对于angularjs框架来说,必须把它看成一个完整的套件来使用,框架中的所有的东西都包含在里面,接下来将会介绍angular的基础模块,这样你就可 ...

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

    1.浅谈非入侵式JavaScript <div ng-click="doSomething()">...</div>这些指令和原来的事件处理器有下面不同之处 ...

  5. 【AngularJS】【02】AngularJS应用骨架

    ※文件引自OneDrive,有些人可能看不到

  6. AngularJs 基础(60分钟入门)

    AngularJS 是一个创建富客户端应用的JavaScript MVC框架.你仍然需要具有服务端后台,但大多数的用户交互逻辑将放到客户端上处理.它可以创建单页的应用程序,一个页面的应用仅仅需要HTM ...

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

    中文学习资料: 中文资料且成系统的就这么多,优酷上有个中文视频. http://www.cnblogs.com/lcllao/archive/2012/10/18/2728787.html   翻译的 ...

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

    开篇介绍 AngularJS是什么东西?我觉得不用再描述了.可自行去充电一下.按照惯例,让我们先看看一个Hello World的开门简介吧. <!doctype html> <htm ...

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

    AngularJs是一个不错的用于开发SPA应用(单页Web应用)的框架.单页Web应用(single page web application,SPA),就是只有一张Web页面的应用.浏览器一开始会 ...

随机推荐

  1. Javascript 母羊生小羊问题,递归

    农场买了一只小羊,这种羊在第一年是小羊,第二年的年底会生一只小羊,第三年不生小羊,第四年的年底还会再生下一只小羊,第五年就死掉了. 要计算N年时农场里有几只羊. [凡是碰到“一生二.二生三.三生万物” ...

  2. 转载: Asp.net常见word,excel,ppt,pdf在线预览方案

    参考链接: http://www.cnblogs.com/wolf-sun/p/3569960.html

  3. bzoj 2243 [SDOI2011]染色(树链剖分,线段树)

    2243: [SDOI2011]染色 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4637  Solved: 1726[Submit][Status ...

  4. JavaScript运行机制浅析

    从一个简单的问题谈起: <script type="text/javascript"> alert(i); var i = 1; </script> 输出结 ...

  5. 关于T-SQL重编译那点事,WITH RECOMPILE和OPTION(RECOMPILE)区别仅仅是存储过程级重编译和SQL语句级重编译吗

    本文出处:http://www.cnblogs.com/wy123/p/6262800.html   在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的 ...

  6. c pointer and array

    Pointer:  A pointer is a variable that contains the address of a variable. if c is a char and p is a ...

  7. HDU-4879-ZCC loves march(map+set+并查集)

    Description On a m*m land stationed n troops, numbered from 1 to n. The i-th troop's position can be ...

  8. Mysql : L闪存卡linux中的内核参数设置

    将 Nytro WarpDrive 加速卡配置为文件系统 本节说明的操作使您可调整 Nytro WarpDrive 加速卡,增强使用 Oracle Linux with Unbreakable Ent ...

  9. MYSQL 学习笔记1 -----mysqladmin -uroot -p status|extended-status

    root@server1 ~]# mysqladmin -uroot -p status -i -r extended-status|grep Handler_commit Enter passwor ...

  10. 【Qt】测测你对Qt的了解–Qt工具知多少

      原文:http://blog.163.com/lijiji_1515/blog/static/1268774462009103101944455/   你知道Qt都提供了哪些工具吗? 你知道Qt的 ...