真正的应用须要和真实的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. less与sass的区别点

    less与sass: 相同点: 1,两者都作为css扩展技术,也都,基于css的高级预处理语言之上. 2,都有的优点:简化代码,降低维护成本. 3,都必须要避免中文环境,所涉及到的所有目录,标题以及内 ...

  2. hdu 1116(并查集+欧拉路径)

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  3. NetStream论文

    https://max.book118.com/html/2016/0102/32573670.shtm http://www.docin.com/p-1568348795.html

  4. uva12265 贩卖土地 单调栈

    输入一个n*m的矩阵,每个格子可能是空地,也可能是沼泽.对于每个空地格子,求出以它为右下角的空矩形的最大周长,然后统计每个周长出现了多少次. 输入包含多组测试数据,第一行输入一个正整数N,表示输入样例 ...

  5. 如何打造属于自己的Javascript武器库(封装方法)

    前言 代码写的久了,就会发现很多时候都是在写一些重复的东西,这个时候就应该要考虑到提高工作效率了,比如对常用方法的封装,例如日期格式化,浏览器类型判断等. 今天这篇文章我们就来看看如何封装常用的Jav ...

  6. Python_Tips[0] -> 关于 import

    关于 import 1 import import可用于导入一个Python的标准模块,包括.py文件或带有__init__.py的文件目录. 在Python中,import一个模块后,若再次impo ...

  7. Codeforces 920 E Connected Components?

    Discription You are given an undirected graph consisting of n vertices and  edges. Instead of giving ...

  8. [LOJ6281]数列分块入门 5

    题目大意: 给你一个长度为$n(n\leq50000)$的序列$A(0\leq A_i<2^{31})$,支持进行以下两种操作: 1.将区间$[l,r]$中所有数开方: 2.询问区间$[l,r] ...

  9. php的function() use($args)用法

    使用use返回 aaa aaa.使用函数传参数aaa bbb. use的参数必须是已经存在的,如果没有定义返回Notice: Undefined variable: word ,使用函数参数方式不需要 ...

  10. 基于Bootstrap的下拉框插件bootstrap-select

    写在前面: 在这次的项目中,没有再使用liger-ui做为前端框架了,改为了Bootstrap,这次也好接触下新的技术,在学习的过程中发现,Bootstrap的一些组件基本都是采用class的形式,就 ...