angular-resource
上一篇中讲到使用$http同服务器进行通信,但是功能上比较简单,angularjs还提供了另外一个可选的服务$resource,使用它可以非常方便的同支持restful的服务单进行数据交互。
安装
ngResource模块是一个可选的angularjs模块,如果需要使用,我们要单独引用js
- <script type="text/javascript" src="/javascripts/angular-resource.js">
应用$resource
我们并不是直接通过$resource服务本身同服务器通信,$resource是一个创建资源对象的工厂,用来创建同服务端交互的对象。
var User = $resource('/api/users/:userId', {userId:'@id'});
返回的User对象包含了同后端服务进行交互的方法,我们可以把User对象理解成同RESTFul的后端服务进行交互的接口。
该对象包含两个get类型的方法已经三个非get类型的方法。
User.get({id:'123'}, successFn, errorFn);
该方法向url发送一个get请求,并期望一个json类型的响应。这里会向/api/users/123发送一个请求,successFn处理请求成功响应,errorFn处理错误。
User.query(params, successFn, errorFn)
同get()方法使用类似,一般用来请求多条数据。
save(params, payload, successFn, errorFn);
save方法会发起一个post请求,params参数用来填充url中变量,对象payload会作为请求体进行发送
delete(params, payload, successFn,errorFn)
delete方法一个DELETE请求,payload作为消息体进行发送
remove(params, payload, successFn, errorFn)
同delete类似,不同的是remove用来移除多条数据
通过$resource生成的对象来同服务器进行交互的时候,我们看可以定义处理成功以及处理失败的函数,这些函数接受的参数不仅仅是简单的对象,而是经过包装之后的对象,会被添加$save(), $remove(), $delete三个方法,可以直接调用这三个方法来后服务端进行交互。
- User.get({id:'123'}, function(user){
- user.name = 'changeAnotherName';
- user.$save();
- //这里等价于User.save({id:'123'},{name:'changeAnotherName'})
- });
扩展$resource
$resource对常见的五种请求进行封装,我们还可以对$resource进行扩展。
这里要扩展$resource我们需要传入第三个参数,该参数是一个对象。
- $resource('/api/users',{},{
- sendEmail:{
- method:'',
- url:'',
- params:{},
- isArray:boolean,
- transformRequest:函数或者函数数组
- transformResponse:函数或者函数数组
- cache:布尔型或缓存对象
- timeout:数值或promise对象
- withCredentials:布尔类型
- responseType:字符串,用来设置XMLHttpRequestResponseType属性
- }
- })
我们也可以将$resource服务当做自定义服务的基础。
angular.module('testApp', ['ngResource']),factory('UserService',['$resource', function($resource){
return $resource(url,{},{});
}]);
angular-resource的更多相关文章
- angular $resource模块
目录(?)[-] 安装 应用resource 扩展resource 上一篇中讲到使用$http同服务器进行通信,但是功能上比较简单,angularjs还提供了另外一个可选的服务$resource, ...
- Angular - - $resource 更高端的数据交互
$resource 创建一个resource对象的工厂函数,可以让你安全的和RESFUL服务端进行数据交互. 需要注入 ngResource 模块.angular-resource[.min].js ...
- angular -- $resource 用法
安装 ngResource模块是一个可选的angularjs模块,如果需要使用,我们要单独引用js <script type="text/javascript" src=&q ...
- angular $resource 的 get请求 和 post请求
1.语法: $resource(url,[paramDefaults],[actions],options); 详解: (1)url:一个参数化的url模板 (2)paramDefaults:url参 ...
- Angular简单应用剖析
这一篇我们将一起感受学习一个小型的.活生生的应用,而不是继续深入分析哪些单个的特性.我们将会一起感受一下,前面所讨论过的所有片段如何才能真正的组合在一起,形成一个真实的.可以运行的应用. GutHub ...
- 使用 angular directive 和 json 数据 D3 随着标签 donut chart演示样本
使用angular resource载入中priorityData.json中间json数据,结合D3绘制甜甜圈图.执行index.html其结果见于图.: priorityData.json中jso ...
- Using RequireJS in AngularJS Applications
http://www.sitepoint.com/using-requirejs-AngularJS-applications/ While writing large JavaScript appl ...
- jQuery事件:bind、delegate、on的区别
最近在AngularJS的开发中,遇到一个神奇的事情:我们用到livebox来预览评论列表中的图片, 然而评论列表是由Angular Resource动态载入的.不可思议的是,点击这些动态载入的图片仍 ...
- node.js应用--转载
最近,在向大学生们介绍 HTML5 的时候,我想要对他们进行问卷调查,并向他们显示实时更新的投票结果.鉴于此目的,我决定快速构建一个用于此目的的问卷调查应用程序.我想要一个简单的架构,不需要太多不同的 ...
- angular学习笔记(二十八-附1)-$resource中的资源的方法
通过$resource获取到的资源,或者是通过$resource实例化的资源,资源本身就拥有了一些方法,$save,$delete,$remove,可以直接调用来保存该资源: 比如有一个$resour ...
随机推荐
- Elasticsearch 三种分页方式
from + size 浅分页 "浅"分页可以理解为简单意义上的分页.它的原理很简单,就是查询前20条数据,然后截断前10条,只返回10-20的数据.这样其实白白浪费了前10条的查 ...
- Memcache Redis 与Mogodb优缺点
MemcachedMemcached的优点: Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约 ...
- QT使用tableWidget显示双排列表 而且选中用红框圈出来
如需转载请标明出处:http://blog.csdn.net/itas109 整个project下载地址:http://download.csdn.net/detail/itas109/7607735 ...
- JavaSE 最easy出错的几个简单的问题
案例1. package cn.itcast.oop; public class ThisDemo { public static void main(String[] args) { Student ...
- 最长公共子序列(Swift版本)
class Mark { var count: Int var type: Int init(count: Int, type: Int) { self ...
- bzoj5216: [Lydsy2017省队十连测]公路建设
题目思路挺巧妙的. 感觉应该可以数据结构一波,发现n很小可以搞搞事啊.然后又发现给了512mb,顿时萌生大力线段树记录的念头 一开始想的是记录节点的fa,然后发现搞不动啊?? 但其实边肯定最多只有n- ...
- 英语发音规则---W字母
英语发音规则---W字母 一.总结 一句话总结: 1.W在单词开头发[w]? week [wiːk] n. 周,星期 win [wɪn] vt. 赢得 wake [weɪk] vi. 醒来 sweet ...
- 英语发音规则---M字母
英语发音规则---M字母 一.总结 一句话总结: 1.M发[m]音? monkey ['mʌŋkɪ] n. 猴子:顽童 come [kʌm] vi. 来 tomato [tə'mɑːtəʊ] n. 番 ...
- hmm CDN检测
# -*- coding:utf-8 -*- import sys import re from hmmlearn import hmm import numpy as np from sklearn ...
- [IOI 1998] Polygon
[题目链接] http://poj.org/problem?id=1179 [算法] 区间DP [代码] #include <algorithm> #include <bitset& ...