2013-12-10 3 views
1

Прошло 3 месяца с тех пор, как я использовал угловые, и я люблю его. Закончил приложение, используя его, и теперь я нахожусь на рефакторинге кода или улучшении кода для лучшей практики. У меня есть Api service.js, который использовал $ HTTP, и я хочу, чтобы перенести его на использование $ ресурса :)Миграция с http на ngResource Angular

я здесь образец моего апи кода с помощью $ Http:

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 
}); 

выше код работают и теперь вот моя первая попытка использования $ ресурса:

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 

вот как далеко я, не знаю, как передать данные в моей API, используя $ ресурс из моего контроллера. Это всего лишь одна часть моего ави-звонка, все еще есть куча, но пока это будет сделано. : D.

Любая помощь очень ценится.

Благодаря

ответ

1

Вы можете попробовать это:

API

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

Примечание: UserType в URL означает, что значение UserType имущества, которое вы прошли в PostData заменит часть 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); 

Надеется, что это полезно.

+0

привет, спасибо, что нашли время, отвечая на мой вопрос. : D. Как я могу изменить typeOfUser в контроллере? Так как у меня разные пользователи. Еще раз спасибо .. – user2720708

+0

Вы можете добавить данные типа пользователя в postData и использовать: usertype для динамического изменения URL-адреса источника данных RESTful. Ответ обновлен. – Chickenrice

+0

хорошо, я почти закончил, последнее, что я получаю ответ 500. И я заметил, что проблема в том, что данные, которые я передал, были в форме 'Query String Parameter', которые, предположительно, мне нужно передать данные в качестве Request Payload. Как мне это сделать? – user2720708

Смежные вопросы