继续上一篇 继续了解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. 转载:Python中的new style class机制实现

    1.Python中的对象模型python中所有东西都是对象 class对象:表示Python内置的类型和定义的类型instance对象(实例对象):表示由class对象创建的实例 1.1 对象间的关系 ...

  2. Javascript数据类型——number类型

            ECMAScript规范中使用IEEE754格式来表示整数和浮点数.支持十进制.八进制以及十六进制.有一点注意的是八进制数字在严格模式下是无效的,这可能会影响到程序的正常运行. 避免浮 ...

  3. jQuery.validate 中文API

      名称 返回类型 描述 validate(options) 返回:Validator 验证所选的FORM valid() 返回:Boolean 检查是否验证通过 rules() 返回:Options ...

  4. OGG 单表初始化操作步骤

    有时候ogg两端数据不一致,且数据量较大,手工修改比较复杂的情况下,我们需要对这些表进行初始化.初始化的大概思路是: 1. 停止两端OGG 2. 如果业务不可以停很长时间,就需要配置目标端进程,暂停这 ...

  5. Yii2 ActiveForm表单自定义样式

    实例: <?php $form = ActiveForm::begin([ 'fieldConfig' => [ 'template' => '<div class=" ...

  6. [置顶] 如何访问web文件夹之外的文件

        在编写项目时,遇到一个如何访问web文件夹之外的文件的问题.因为我要制作一个浏览图片和pdf文件的一个简单网站.但问题是图片的文件夹和pdf文件的文件夹都是其他程序生成的,自然也就是不是网站w ...

  7. use SWF / Flash in cocos2d-x; cocos2d(cocos2d-x) 直接播放flash / SWF文件

    前段时间移植一个页游到手游,原先页游的项目里面有1000+的Flash人物,宠物动画,特效. 这要是全部重新做一遍,还不累死人?所以就想干脆直接在Cocos2d(x)里面播放SWF文件.(包括场景,过 ...

  8. JavaScript-每隔5分钟执行一次ajax请求的实现方法

    个页面好像只能有一个 window.onload=function(){},所以要有多个事件,这样写就好了 window.onload=function(){ //假设这里每个五分钟执行一次test函 ...

  9. Hadoop-2.4.1学习之Map任务源代码分析(下)

    在Map任务源码分析(上)中,对MAP阶段的代码进行了学习,这篇文章文章将学习Map任务的SORT阶段.假设Reducer的数量不为0.则还须要进行SORT阶段.但从上面的学习中并未发现与MAP阶段运 ...

  10. Context

    Context,中文直译为“上下文”,SDK中对其说明如下: Interface to global information about an application environment. Thi ...