Angularjs 从$resource切换到restanglar

Angularjs 从$resource切换到restanglar,angularjs,restangular,Angularjs,Restangular,我读过关于restangular的好东西,但我不知道如何从当前使用$resource的配置中切换 这是我使用$resource的实际设置: 在service.js中: .factory('List', function($resource) { return $resource('relative/url/to/json/:type/:id', { type:'@type', id:'@id' }); }) 两个不同的控制器使用此服务: “细节”控制器 .controller('Det

我读过关于restangular的好东西,但我不知道如何从当前使用$resource的配置中切换

这是我使用$resource的实际设置:

在service.js中:

.factory('List', function($resource) {
    return $resource('relative/url/to/json/:type/:id', { type:'@type', id:'@id' });
})
两个不同的控制器使用此服务:

“细节”控制器

.controller('DetailCtrl', ['$scope', '$routeParams', 'List', function($scope, $routeParams, List) {
    var p = {'type': $routeParams.type, "id": $routeParams.id };
    List.get(p, function(detail, responseHeaders) { // success callback
        $scope.detail = detail; 
        // do something with responseHeaders
    });
}])
$scope.elm = Restangular.one($routeParams.type, $routeParams.id).get();
var params = { sort: 'DESC', limit: 8};
$scope.loadList = function (type, params) {
    $scope.list = Restangular.all(type).getList(params);
}
“列表”控制器:

.controller('ListCtrl', ['$scope', 'List', function($scope, List) {
    var params = { sort: 'DESC', limit: 8 }; 
    $scope.loadList = function (type, params) {
        params.type = type; 
        List.query(params, function(list, responseHeaders) { // success callback
            $scope.list = list; 
            // do something with responseHeaders
        });
    }
}])
我想用restanglar替换所有$resource内容。

配置后,Restangular以基本方式获取数据,如下所示:

•在“细节”控制器内部

.controller('DetailCtrl', ['$scope', '$routeParams', 'List', function($scope, $routeParams, List) {
    var p = {'type': $routeParams.type, "id": $routeParams.id };
    List.get(p, function(detail, responseHeaders) { // success callback
        $scope.detail = detail; 
        // do something with responseHeaders
    });
}])
$scope.elm = Restangular.one($routeParams.type, $routeParams.id).get();
var params = { sort: 'DESC', limit: 8};
$scope.loadList = function (type, params) {
    $scope.list = Restangular.all(type).getList(params);
}
•在“列表”控制器内

.controller('DetailCtrl', ['$scope', '$routeParams', 'List', function($scope, $routeParams, List) {
    var p = {'type': $routeParams.type, "id": $routeParams.id };
    List.get(p, function(detail, responseHeaders) { // success callback
        $scope.detail = detail; 
        // do something with responseHeaders
    });
}])
$scope.elm = Restangular.one($routeParams.type, $routeParams.id).get();
var params = { sort: 'DESC', limit: 8};
$scope.loadList = function (type, params) {
    $scope.list = Restangular.all(type).getList(params);
}
这是有效的。但现在:

1。如何获取响应标题?


2。如何将数据发送到成功回调函数中的作用域?

好吧,我想对您来说已经太晚了,但这可能会帮助其他人

对于问题#1,我在以下位置发现了这一点:

setFullRequestInterceptor

fullRequestInterceptor与requestInterceptor类似,但是 更强大。它允许您更改元素、请求参数 以及标题

它是一个与requestInterceptor plus接收相同数据的函数 标题和查询参数(按该顺序)

它必须返回具有以下属性的对象:

头:要发送的头

params:要发送的请求参数

元素:要发送的元素

httpConfig:要调用的httpConfig

您可以这样做(编辑:我认为在这个函数中,您还可以设置范围数据,更改代码):