0

我将以下资源定义为名为“用户”的服务:

return $resource('/user', {}, {
    login: {
        url: 'user/login',
        method: 'PUT', 
        headers: {
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        }
    }
});

我可以使用它来登录内部控制器,如下所示:

User.login({
                    Password: $scope.password,
                    UserName: $scope.name,
                    OsModel: Os.model,
                    OsVersion: Os.version
                });

(Os 是另一个提供一些值的服务)。问题是这个资源也将在其他一些控制器中使用,我不想在不同的控制器周围和内部设置不相关的值,如 OsModel 和 OsVersion,所以想法是在资源定义的服务中设置这两个值将登录操作设置为一些默认值,以便将它们设置在有效负载正文中。

我尝试使用 params 键,但它将这些值作为查询参数发送,并且没有将它们添加到请求有效负载中,而且我在 Angular 文档中没有找到任何其他内容。有什么方法可以在角度上做到这一点?

我正在使用角度 v 1.2.11。

4

1 回答 1

0

好的,我最终在 $resource 定义上使用了transformRequest,如下所示:

return $resource('/user', {}, {
    login: {
        url: 'user/login',
        method: 'PUT', 
        headers: {
            'Content-Type': 'application/json',
            'Accepts': 'application/json'
        },
        transformRequest: function(data) {
            data.OsModel = Os.model;
            data.OsVersion = Os.version;

            return JSON.stringify(data);
        }
    }
});

不确定这是否是最优雅的方式,但这对我有用。

于 2014-02-06T08:42:09.823 回答