从http迁移到ngResource Angular

时间:2013-12-10 03:21:36

标签: javascript angularjs angular-resource ngresource

自从我使用棱角分钟以来,已经有3个月了,我很喜欢它。完成了一个使用它的应用程序,现在我正在进行代码重构或改进我的代码以获得更好的练习。我有一个使用$ http的Api service.js,我想将它迁移到使用$ resource:)

我这里有一个使用$ http:

的api代码示例
Service.js
authenticatePlayer: function(postData) {
        return $http({
          method  : 'POST',
          url     : api + 'auth/player',
          data    : postData,
          headers : {'Content-Type' : 'application/json'}
        });
      },

#Controller.js
Api.authenticatePlayer(postData).then(function (result){
    //success   
}, function(result) {
    //error also this will catch error 400, 401, and 500
});

上面的代码正在运行,现在这是我第一次尝试使用$ resource:

authenticate: function() {
    return $resource(api + "auth/:usertype",
        {
          typeOfUser : "@usertype" //types can be player, anonymous, admin
        },
        {
          post : { method : "POST" }
        }
    );
}
#Controller
var postData = {
    email    : scope.main.email,
    password : scope.main.password
};

var loginUser = new Api(postData);
loginUser.$post(); //error T__T

这就是我得到了多少,不知道如何使用我的控制器中的$ resource将数据传递给我的api。这只是我的api电话的一部分,还有一堆,但现在这样做。 :d。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

API

authenticate: function(){
  return $resource(api+"auth/:usertype",{},post:{method:"POST"});
}

注意:URL中的usertype表示您传递给postData的usertype属性的值将替换URL的部分

控制器

var postData = {email:scope.main.email,password:scope.main.password};

API.authenticate().post({usertype:'player'},postData,function(response){
  console.log(response);
});

或者您可以像这样获取响应:

var response = API.authenticate().post({usertype:'player'},postData);

希望这有用。