angularjs应用骨架(4)
继续上一篇 继续了解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)的更多相关文章
- angularjs应用骨架(2)
时隔一个星期,接着上一篇的angularjs应用骨架继续聊聊angularjs其他的其他的内容. 区分UI和控制器的职责 在应用控制器中有三种职责: 1.为应用中模型设置初始状态 2.通过$scope ...
- angularjs应用骨架(3)
好,继续上一章节我们继续聊聊angularjs骨架.开发任何一款优秀的应用都会面临一项非常困难的工作,那就是找到一种合适的方式方法把代码组织在合适的功能范围内.我们已经看过控制器的处理方式,它会提供一 ...
- angularjs应用骨架
使用典型的类库时,你可以选择并使用你所喜欢的功能:而对于angularjs框架来说,必须把它看成一个完整的套件来使用,框架中的所有的东西都包含在里面,接下来将会介绍angular的基础模块,这样你就可 ...
- 用angularjs开发下一代web应用(二):angularjs应用骨架(二)
1.浅谈非入侵式JavaScript <div ng-click="doSomething()">...</div>这些指令和原来的事件处理器有下面不同之处 ...
- 【AngularJS】【02】AngularJS应用骨架
※文件引自OneDrive,有些人可能看不到
- AngularJs 基础(60分钟入门)
AngularJS 是一个创建富客户端应用的JavaScript MVC框架.你仍然需要具有服务端后台,但大多数的用户交互逻辑将放到客户端上处理.它可以创建单页的应用程序,一个页面的应用仅仅需要HTM ...
- AngularJS 中文资料+工具+库+Demo 大搜集
中文学习资料: 中文资料且成系统的就这么多,优酷上有个中文视频. http://www.cnblogs.com/lcllao/archive/2012/10/18/2728787.html 翻译的 ...
- 用AngularJS开发下一代Web应用 系列入门基础教程
开篇介绍 AngularJS是什么东西?我觉得不用再描述了.可自行去充电一下.按照惯例,让我们先看看一个Hello World的开门简介吧. <!doctype html> <htm ...
- AngularJs 基础(60分钟入门) (转)
AngularJs是一个不错的用于开发SPA应用(单页Web应用)的框架.单页Web应用(single page web application,SPA),就是只有一张Web页面的应用.浏览器一开始会 ...
随机推荐
- CUDA编程-(1)Tesla服务器Kepler架构和万年的HelloWorld
结合CUDA范例精解以及CUDA并行编程.由于正在学习CUDA,CUDA用的比较多,因此翻译一些个人认为重点的章节和句子,作为学习,程序将通过NVIDIA K40服务器得出结果.如果想通过本书进行CU ...
- Tyvj P1463 智商问题 分块
P1463 智商问题 时间: 1500ms / 空间: 131072KiB / Java类名: Main 背景 各种数据结构帝~各种小姊妹帝~各种一遍AC帝~ 来吧! 描述 某个同学又有很多小姊妹了他 ...
- 删除用不到的linux内核
方法1 sudo aptitude purge ~ilinux-image-.*\(\!`uname -r`\) 方法2 sudo apt-get autoremove 方法3 uname -a #使 ...
- weekend110(Hadoop)的 第三天笔记
(2015年1月17日) 课程目录 01-hdfs源码跟踪之打开输入流 02-hdfs源码跟踪之打开输入流总结 03-mapreduce介绍及wordcount 04-wordcount的编写和提交集 ...
- 3 视频里weekend05、06、07的可靠性 + HA原理、分析、机制 + weekend01、02、03、04、05、06、07的分布式集群搭建
现在,我们来验证分析下,zookeeper集群的可靠性 现在有weekend05.06.07 将其一个关掉, 分析,这3个zookeeper集群里,杀死了weekend06,还存活weekend05. ...
- PHP导出MySQL数据到Excel
经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限.这里的方法是利用fputcsv写CS ...
- 安装windows7、windows8.1提示无法创建新的分区
有时候用原版系统镜像安装windows系统时,会提示“windows无法安装到这个磁盘.选中的磁盘采用GPT分区形式”,导致安装失败,下面就来讲解一下如何解决. 1.在系统提示无法安装的那一步,按住“ ...
- java 图片压缩 剪切 水印 转换 黑白 缩放
专注java已6年,欢迎加入java核心技术QQ群:135138817,每周五晚有群主进行技术讲座. import java.awt.AlphaComposite; import java.awt.C ...
- 模仿微信"转你妹"游戏
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- [PHP] csv to xml
<?php error_reporting(E_ALL | E_STRICT); ini_set('display_errors', true); ini_set('auto_detect_li ...