【问题标题】:calling one of multiple services in angularJS $resource在 angularJS $resource 中调用多个服务之一
【发布时间】:2014-08-19 00:58:13
【问题描述】:

我试图让一种服务方法指向不同的 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 }
          })
      };
}]);

然后在我的控制器中我这样调用 pList:

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

上面的任何代码都不会调用服务方法。但是,如果我将服务更改为此:

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 调用的服务有什么问题?它的配置方式或我调用它的方式有什么问题吗?

【问题讨论】:

  • 这可能是由于在第一种情况下抛出的错误,因为 $routeParams 未定义(因为您不是通过 DI 注入它)。
  • 谢谢。这就是问题所在。

标签: asp.net angularjs angularjs-service angularjs-routing


【解决方案1】:

第一种方法也应该可以正常工作。

唯一的问题是您试图访问 $routeParams 的属性,而没有先通过 DI 注入它,从而导致抛出错误。
如果您更正此问题,一切都会按预期进行。

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2014-12-20
    • 2017-12-08
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多