深入理解Angularjs中的$resource服务(2)

//对于query请求 app.get('/info',function(req,res){ var info=[ {Code:'1001',Name:'zhangsan',Gender:'female'}, {Code:'1002',Name:'lisi',Gender:'male'} ]; res.status(200).json(info); }); //对于save请求 app.post('/info',function(req,res){ if(req.body.key=='1001'){ res.send('1'); }else{ res.send('0') } });

三、在$resource服务中自定义请求方法

var obj=$resource(url,[,paramsDefaults],[,actions])

在第三个可选参数中,通过key/value的方式自定义。

<div ng-controller='myController'> <div> <div>{{r0}}</div> <div>{{r1}}</div> <div>{{r2}}</div> <button ng-click='click()'>开始</button> </div> </div> <script type="text/javascript"> var url='/self?action=:act'; angular.module('myapp',['ngResource']) .config(function($httpProvider){ $httpProvider.defaults.transformRequest=function(obj){ var arrStr=[]; for(var p in obj){ arrStr.push(encodeURIComponent(p)+"="+encodeURIComponent(obj[p])); } return arrStr.join("&"); }; $httpProvider.defaults.headers.post={ 'Content-Type':'application/x-www-form-urlencoded' } }) .factory('custom',['$resource',function($resource){ return $resource(url,{act:'search'}, { update:{ method:'POST',//使用POST方式请求服务器 params:{ update:true }, isArray:false //表示调用该方法后,服务器返回的数据可以不是一个数组 } }); }]) .controller('myController',['$scope','custom',function($scope,custom){ $scope.click=function(){ //这里的id是放在url后面的,/self?action=search&id=1001 custom.get({id:'1001'},function(resp0){ $scope.r0=(resp0[0]=='1')?'查找成功':'查找失败'; resp0.key='1001'; // /self?action=update&update=true resp0.$update({act:'update'},function(resp1){ $scope.r1=(resp0[0]=='1')?'更新成功':'更新失败'; //这里的key是放在数据body体里面的 resp1.key='1002'; //self?action=save resp1.$save({act:'save'},function(resp2){ $scope.r2=(resp0[0]=='1')?'保存成功':'保存失败'; }) }) }) } }]) </script>

对应的服务器端文件,使用了Express架构,核心代码如下:

// /self?action=search&id=1001 app.get('/self',function(req,res){ if(req.query.action=='search'){ console.log('req.params.id:'+req.params.id); if(req.query.id=='1001'){ res.send('1'); }else{ res.send('0'); } } }); // /self?action=update&update=true /self?action=save app.post('/self',function(req,res){ if(req.query.action=='update'){ if(req.body.key=='1001' && req.query.update=='true'){ res.send('1'); }else{ res.send('0'); } }else if(req.query.action=='save'){ if(req.body.key=='1002'){ res.send('1'); }else{ res.send('0'); } } })

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjddz.html