2016-02-04 6 views
0

Мой ресурс:

angular.module('myApp.services') 
    .factory('MyResource', ['$resource', function ($resource) { 
     return $resource('http://example.org', {}, {}); 
    }]); 

Как сделать запрос GET является:

MyResource.get({z: 5, a: 4}); 

URL, порожденный AngularJS является:

http://example.org/?a=4&z=5

Как нужен URL-адрес:

http://example.org/?z=5&a=4

Любые решения?

P.S. Я думал, что использование перехватчика может сделать трюк, но нет способа перехвата запроса, но есть дополнительные методы, называемые response и responseError. Это связано с тем, что перехватчики для $ resource и $ http отличаются друг от друга. См .: $resource и $http

+2

Вы не можете гарантировать порядок свойств вашего объекта [по дизайну] (http://stackoverflow.com/questions/5525795/does-javascript-guarantee-object- свойство порядка). – Bigood

+1

, но зачем вам это нужно? порядок в параметрах не имеет значения – Grundy

+0

@Bigood спасибо за ваш комментарий. Это может быть причиной того, что AngularJS сортирует параметры по алфавиту. – hswner

ответ

4

Вы можете попробовать это. Я просто предпочитаю это для любого вызова службы

var app=angular.module("Test",[]); 

app.service('somename', function ($http) { 

this.GetData = function (z,a) { 
    return $http.get('http://example.org/?z='+z+'&a='+a); 
} 
}); 

app.controller("demo",function($scope,somename){ 

var d=somename.GetData(4,5); 

}); 
+1

Спасибо. Хорошее обходное решение, но не лучшее решение :(Потому что он использует $ http вместо $ resource, и вы создаете URL-адрес вручную, что сложно в большинстве случаев. $ Resource - это хорошая абстракция $ http для сервисов RESTful и дает много преимуществ – hswner

+0

Но на случай, если у меня не хватит времени, это точный подход, который я бы попробовал;) – hswner