真正的应用须要和真实的server进行交互,移动应用和新兴的Chrome桌面应用可能是个例外,可是对于此外的全部应用来说,不管你是想把数据持久化到云端。还是须要与其它用户进行实时交互。都须要让应用与server进行交互。

为了实现这一点。Angular提供了一个叫做$http的服务。它提供了一个可扩展的抽象方法列表。使得与server的交互更加easy。

它支持HTTP、JSONP和CORS方式。它还包括了安全性支持。避免JSON格式的脆弱性和XSRF。它让你能够轻松地转换请求和响应数据,甚至还实现了简单的缓存。

例如,我们打算让购物网站从server上获取商品信息,而不是从内存假数据获取。怎样编写服务端代码已经超越了本书的范畴。所以,我们只来想象一下,例如说我们已经创建了一个server,当查询/products 路径时。它会以JSON格式返回一个商品列表。

返回的响应示比例如以下:

[

  {

    "id": 0,

    "title": "Paint pots",

    "description": "Pots full of paint",

    "price": 3.95

  },

  {

    "id": 1,

    "title": "Polka dots",

    "description": "Dots with that polka groove",

    "price": 12.95

  },

  {

    "id": 2,

    "title": "Pebbles",

    "description": "Just little rocks, really",

    "price": 6.95

  }

  ...etc...

]

我们能够像以下这样编写查询代码:

function ShoppingController($scope, $http) {

  $http.get('/products').success(function(data, status, headers, config) {

    $scope.items = data;

  });

}

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

<body ng-controller="ShoppingController">

    <h1>Shop!</h1>

    <table>

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

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

        <td>{{item.description}}</td>

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

      </tr>

    </table>

  </div>

</body>

正如我们前面讲过的,从长远来看,让服务来代理与server交互的工作对我们有优点,这个服务能够被多个控制器共享。

来自《AngularJS开发下一代Web应用》一书

在线版在https://github.com/edagarli/AngularJSWeb

angularjs与server交互的更多相关文章

  1. 深入浅出 Redis client/server交互流程

    综述 最近笔者阅读并研究redis源码,在redis客户端与服务器端交互这个内容点上,需要参考网上一些文章,但是遗憾的是发现大部分文章都断断续续的非系统性的,不能给读者此交互流程的整体把握.所以这里我 ...

  2. ASP.NET MVC与Sql Server交互,把字典数据插入数据库

    在"ASP.NET MVC与Sql Server交互, 插入数据"中,在Controller中拼接sql语句.比如: _db.InsertData("insert int ...

  3. [从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互

    [从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互 0x00 摘要 0 ...

  4. AngularJS与服务器交互(4)

    转自:http://itindex.net/detail/50919-angularjs-%E6%9C%8D%E5%8A%A1%E5%99%A8-%E4%BA%A4%E4%BA%92 对于AJAX应用 ...

  5. hashlib(hmac)进阶之client跟server交互

    首先我还是要强调不管任何相同的字符串通过hashlib加密之后都会产生相同的32位字符串,这个是日常Web中常用的加密算法如果我的client发送一个请求过来我server接受到后就要对该密码进行判断 ...

  6. Androidannotation使用之@Rest与server交互的JSON数据转换(二)

    开篇 之前的一篇博客:Androidannotation使用之@Rest获取资源及用户登录验证(一):http://blog.csdn.net/nupt123456789/article/detail ...

  7. ASP.NET MVC与Sql Server交互, 插入数据

    在"ASP.NET MVC与Sql Server建立连接"中,与Sql Server建立了连接.本篇实践向Sql Server中插入数据. 在数据库帮助类中增加插入数据的方法. p ...

  8. angularjs向后台传递数据,与后端进行交互

    angularjs之数据交互 function loadLeftFirstNodes (){ $http.get(sourceUrl,{ params:{ mpId: mpId, visits: ce ...

  9. zookeeper原理解析-客户端与服务器端交互

    Zookeeper集群中server数量总是确定的,所以集群中的server交互采用比较可靠的bio长连接模型:不同于集群中sever间交互zookeeper客户端其实数量是未知的,为了提高zooke ...

随机推荐

  1. CCAction详解

    http://blog.csdn.net/bailongvip/article/details/7895370 转载自雨松MOMO程序研究院 上一章我们了解了CCNode的实现原理,这次我跟大家探讨一 ...

  2. android hook 框架 libinject 如何实现so注入

    前面两篇 android hook 框架 libinject2 简介.编译.运行 android hook 框架 libinject2 如何实现so注入 实际运行并分析了 Android中的so注入( ...

  3. 【Android开发日记】之入门篇(二)——调试

    程序员有一半的时间花在测试BUG身上,而作为一个程序员遇上BUG是不可避免的事情.所以掌握好调试BUG的技术就显得至关重要.接下来我来讲述调试的几个要点. 一.调试机器的选择(模拟器) eclipse ...

  4. 关于Date数据类型格式化的转换

    例如:   jsp页面读取数据库中日期格式的列时可能显示为1988-05-03 00:00:00 格式,但是我们不想要后面的00:00:00时间,只想要前面的年月日,那么该如何做出修改呢? 方法一:我 ...

  5. [TopCoder8600]MagicFingerprint

    题目大意: 定义magic(x)为将x按十进制顺序写下来,依次对相邻两个数写下差的绝对值,并去除前导0得到的新数. 若对得到的magic(x)重复进行多次magic,最后会变成一个一位数. 若最后变成 ...

  6. Vue 基础的开发环境

    本期节目将手把手教你去 NPM 市场买最新鲜的食材,只为搭配 小鲜肉 Vue 下厨. 既然它是当红小鲜肉,我想有必要写一篇文章来帮助大家配置好 Vue 的生产环境,我给它的总体评价是“简单却不失优雅, ...

  7. Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on

    Vue.js的指令是以v-开头的,它们作用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性(attribu ...

  8. PHP模板解析入门

    学习:李炎恢PHP视频第二季 模板引擎的特点: 1.鼓励分离:让更个系统的可读性和维护性得到提高. 2.促进分工:使得程序员和美工去专心处理自己的设计. 3.比PHP更容易解析:编译文件和缓存文件加载 ...

  9. [转载] K3漏油器全紫铜替换原硅胶垫教程。标准姿势

    首先感谢坛友的支持,全铜套件已经完成了.有的坛友希望有个教程.在这里大体说一下技巧吧.下面步入正题. 声明:本教程图片大部分均来源于给坛友改装时所拍.如有雷同,概不负责!!!声明:本教程图片大部分均来 ...

  10. 彻底解决DZ大附件上传问题

    个. 注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.您可以在WEB目录下建立一个php文件,内容很简单就一句话& ...