属性/URL映射

AngularJS Resource:与 RESTful API 交互

自定义$resource方法

<!DOCTYPE html>
<html ng-app="app">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div ng-controller="controller">
<button ng-click="get()">get</button>
<button ng-click="query()">query</button>
<button ng-click="save()">save</button>
<button ng-click="remove()">remove</button>
<button ng-click="sendEmail()">sendEmail</button>
</div>
<script src="angular.js"></script>
<script src="angular-resource.js"></script>
<script>
angular.module('app', ['ngResource']).controller('controller', ['$scope', 'Game', function($scope, Game) {
$scope.get = function() {
// data1.json?group=1&id=id
// GET
Game.get({
gameId: 'data1',
id: 'id'
}, function(resp) {
console.log(resp) resp.name = 'jiji3'
// data2.json?group=1
// POST
// {id: "data2", name: "jiji3"}
resp.$save()
}, function(err) {
console.log(err)
})
} $scope.query = function() {
// data1.json?group=1&id=id
// GET
Game.query({
gameId: 'data1',
id: 'id'
})
} $scope.save = function() {
// data1.json?group=1&id=id
// POST
// {name: "Ari"}
Game.save({
gameId: 'data1',
id: 'id'
}, {
name: 'Ari'
})
} $scope.remove = function() {
Game.remove({}, {
gameId: 'data1',
id: 'data2'
})
/*
{
gameId: 'data1',
id: 'data2'
} 这2个{}是数据 所以匹配@id
*/
} $scope.sendEmail = function() {
Game.sendEmail({
id: 'data1'
})
}
}]).factory('Game', ['$resource', function($resource) {
/**
* $resource(url[, paramDefaults][, actions]);
* If the parameter value is prefixed with @ then the value of that parameter is extracted from the data object
* (useful for non-GET operations).
*/
return $resource('/test/test/:gameId.json', {
gameId: '@id',
group: '1'
}, {
sendEmail: {
method: 'POST'
}
})
}])
</script>
</body>
</html>

data1.json

{
"id": "data2",
"name": "jiji1"
}

data2.json

{
"id": "data1",
"name": "jiji2"
}

随机推荐

  1. C++ #pragma 预处理指令

    #pragma 预编译指令的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征 ...

  2. VC++代码的汇编分析(一)

    VC++代码是最接近汇编指令的高级语言,为了更加准确和深刻理解VC++编码中所涉及的很多技术概念和编译器参数的含义,从汇编指令层面进行剖析和解读,有助于开发者更加准确.直观.深刻理解高级语言中很多概念 ...

  3. MVC文件上传 - 使用jquery异步上传并客户端验证类型和大小

    本篇体验MVC上传文件,从表单上传过渡到jquery异步上传. MVC最基本的上传文件是通过form表单提交方式 □ 前台视图部分 <% using(Html.BeginForm("F ...

  4. MVC , MVP , MVVM【转 阮一峰的网络日志】

    一.MVC MVC模式的意思是,软件可以分成三个部分. 视图(View):用户界面. 控制器(Controller):业务逻辑 模型(Model):数据保存 各部分之间的通信方式如下. View 传送 ...

  5. grep线上环境精典案例后续

    请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令答). 自己的方法: [root@nginx_back ~]# ifconfig eth ...

  6. python使用psutil获取服务器信息

    >>> import psutil 获取cpu信息>>> psutil.cpu_times()scputimes(user=128258.38, nice=12.2 ...

  7. Project not selected to build for this solution configuration.

    Project not selected to build for this solution configuration.   When you upgrade your older solutio ...

  8. log4j记录运行日志

    1.在工程中导入log4j-1.2.15.jar的jar包2.新建测试类 package control; import org.apache.log4j.Logger; import org.apa ...

  9. linux管道的容量和内部组织方式

    1.管道容量  count=65536,即64KB #include<stdio.h> #include<sys/types.h> #include<unistd.h&g ...

  10. vi/vim正则表达式

    http://www.cnblogs.com/penseur/archive/2011/02/25/1964522.html 毋庸多言,在vim中正则表达式得到了十分广泛的应用. 最常用的 / 和 : ...