2013-12-24 2 views
0

Я хотел создать службу API, которую мои контроллеры могут использовать вместо прямого взаимодействия с сервисом $http.AngularJS, создающий службу с точечным синтаксисом API

у меня есть:

app.factory("API", function($http) { 

    var service = { 
     performRequest: function(path, method, params, success) { 
     $http({ 
      url: path, 
      method: method, 
      params: params, 
      withCredentials: true 
     }).success(function(data) { 
      success(data); 
     }); 
     } 
    } 

    return service; 
    } 
); 

И так, как это используется:

API.performRequest("/signout", "POST", null, function(data) { 
    // on success 
}); 

То, что я хотел бы, чтобы быть в состоянии иметь .success свойство вроде $http службы, поскольку в настоящее время function(data) не означает, для чего он предназначен.

Что я хочу:

API.performRequest("/signout", "POST", null).success(function(data) { 
    // on success 
}); 

Как бы это сделать?

ответ

2

Возвращение $http обещание performRequest

app.factory("API", function($http) { 
    var service = { 
     performRequest: function(path, method, params, callback) { 
     return $http({ 
      url: path, 
      method: method, 
      params: params, 
      withCredentials: true 
     }); 
     } 
    } 
    return service; 
    } 
); 
+0

Благодаря этим работает. На самом деле мне интересно, как вообще я буду делать что-то подобное. Скажем, я не использовал $ http, и я хотел иметь свойство '.success' на моем сервисе. Как мне это сделать в родовой ситуации? – Snowman

+0

не уверен, что вы имеете в виду, но можете использовать обещания, созданные библиотекой '$ q', и использовать' then' – charlietfl

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