вызов одной из нескольких служб в AngularJS $resource

#asp.net #angularjs #angularjs-service #angularjs-routing

#asp.net #angularjs #angularjs-service #angularjs-маршрутизация

Вопрос:

Есть ли что-то неправильное в этом коде, где я пытаюсь, чтобы один метод обслуживания указывал на разные службы restful?

 var phonecatServices = angular.module('phonecatServices', ['ngResource']);
phonecatServices.factory('Phone', ['$resource',
  function ($resource) {
      return {
          pList: $resource('/:url/:phoneId.json.htm', {}, {
              query: { method: 'GET', params: { url: 'MyAngularScripts', phoneId: 'jsonPhonedata' }, isArray: true }
          }),
          pDetail: $resource('/Content/PhonesData/:phoneId.json.htm', {}, {
              query: { method: 'GET', params: {   phoneId: $routeParams.phoneId }, isArray: false }
          })
      };
}]);
 

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

 $scope.phones = Phone.pList.query();
 

Метод service не вызывается ни с одним из приведенных выше кодов. Однако, если я изменю службу на эту:

 var phonecatServices = angular.module('phonecatServices', ['ngResource']);

phonecatServices.factory('Phone', ['$resource',
  function ($resource) {
      return $resource('/:url/:phoneId.json.htm', {}, {
          query: { method: 'GET', params: { url: 'MyAngularScripts', phoneId: 'jsonPhonedata' }, isArray: true }
      });
  }]);
 

и вызов из контроллера следующим образом:

 $scope.phones = Phone.query();
 

ЭТО работает. Что не так со службой, в которой у меня объявлено несколько вызовов restful? Что-то не так с тем, как он настроен или как я его вызываю?

Комментарии:

1. Вероятно, это связано с тем, что в первом случае выдается ошибка, поскольку $routeParams она не определена (поскольку вы не вводите ее через DI).

2. Спасибо. в этом и заключалась проблема.

Ответ №1:

1-й подход также должен работать нормально.

Единственная проблема заключается в том, что вы пытаетесь получить доступ к свойству $routeParams , не вводя его сначала через DI, что приводит к возникновению ошибки.
Если вы исправите это, все должно работать так, как ожидалось.