2013-12-06 1 views
0

Есть ли способ передать параметр, содержащий / в Factory? Хотите сделать что-то вроде

.factory('MyData', ['$resource', function ($resource) { 
    return $resource('http://1.2.3.4/:urlFragment', { 
    urlFragment : '' // default empty 
    }, { 
      getData : { 
       method : 'GET' 
      }, 

И назвав его

$scope.scopeVar = MyData.getData({urlFragment : '/some/path/to/data'}); 

Глядя на сетевой консоли, я вижу, что / заменяются %2.

Могу ли я кодировать переданный параметр внутри Factory? (С использованием $http или $resource).

Или вообще, как я могу выполнять любые функции на параметрах внутри фабрики?

ответ

2

Нет, вы действительно не можете получить доступ к URL-адресу вашей фабрики, потому что $resource автоматически обрабатывает его. Но, к счастью, Angular дает вам возможность получить доступ к URL-адресу до его вызова, используя напрямую $resource. Глядя на документы here, одно из действий, которое вы можете предоставить в своем объявлении $resource, - это свойство transformRequest.

return $resource('http://1.2.3.4/:urlFragment', {urlFragment: ''}, { 
    getData: {method: 'GET', transformRequest: function(data, headers){ 
     // make your modifications here to either data or headers 
    }} 
}); 

Хотя я на самом деле не запускаю этот код, я считаю, что это должно позволить вам делать то, что вы хотите. Дайте мне знать, если это не так.

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