$resource

1用前准备

在页面加载 angular-resource.js

2 核心价值

提供给开发者, 与RESTful 风格的webService交互的更好用户体验, 它封装了较为低级的$http, 这样就不需要写大量的请求代码了.

//请求地址, 请求参数, 动作
$resource(url[, parameters][, actions]); 

请求参数: 对象类型, 如{author: “lilei”, age: “20”}, 最终这些参数会被作为键值对添加到url的后面变成 ?author=lilei & age=20

动作: 对象类型,

返回值: 对象类型, 包含所有的互动方法, 这些会调用 “$http”服务

实例:

var User = $resource("/user/:userId", {
    userId: '@id'       
});
var user = User.get({userId: 123}, function(){
    user.abc = true;
    user.$save();
});

注意: @id 和 $save() , 使用@后, 当执行$save时, user.id会作为userId的值来发送请求.

这种方式封装Ajax,不仅仅使得代码更加优雅,而且还能配合ng的视图渲染:当数据没有返回之前,模板引擎不会渲染,一旦异步数据获取完成,会自动触发模板引擎的渲染机制把数据呈现到视图中。

完整的例子:

<!DOCTYPE html>  
<html ng-app="Demo">  
<head>  
<meta charset=utf-8 />  
<title>ngResource DEMO</title>  
</head>  
<body>  
    <div ng-controller="GeekListCtrl">  
        <ul>  
            <li ng-repeat="geek in geeks">  
                <a href="#" ng-click="show({{geek.id}})">{{geek.name}}</a>  
            </li>  
        </ul>  
        <div ng-show="user">  
            {{user.msg}}  
        </div>  
    </div>  

    <script src="./src/angular.js"></script>  
    <script src="./src/angular-resource.js"></script>  
    <script type="text/javascript">  
        var Demo = angular.module('Demo', ["ngResource"])  
                    .factory('Geek', function ($resource){  
                        return $resource("geek/:geekId.json", {}, {  
                            query: {  
                                method: "GET",  
                                params: {geekId: "list"},  
                                isArray: true  
                            }  
                        });  
                    });  

        function GeekListCtrl($scope, Geek){  
            $scope.geeks = Geek.query();  
            $scope.show = function(id){  
                $scope.user = Geek.get({geekId: id});  
            };  
        }  

        function GeekDetailCtrl($scope, $routeParams, Geek){  
            $scope.geek = Geek.get({geekId: $routeParams.geekId}, function(geek){  
                console.dir(geek);  
            });  
        }  
    </script>  
</body>  
</html>  

转自: http://blog.csdn.net/violet_day/article/details/17403207/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值