angularjs $ resource如何调用多个服务

时间:2014-06-27 12:25:27

标签: javascript json angularjs asp.net-mvc-5 angularjs-service

我刚刚开始使用angularjs并已达到this part of the tutorial,其中有一个使用$ resource来访问服务数据的示例。我在ASP.Net MVC中运行此示例,并且存储json文件的位置略有不同。包含电话列表的json文件和包含每部电话详细说明的一堆文件位于不同的文件夹中。 我现在看到的问题是这一行:

return $resource('phones/:phoneId.json', {}, {
      query: {method:'GET', params:{phoneId:'phones'}, isArray:true}

根据我的文件夹结构,可以使用我从上面修改过的这一行访问包含电话列表的json文件

  return $resource('/MyAngularScripts/:phoneId.json.htm', {}, {
      query: { method: 'GET', params: { phoneId: 'jsonPhonedata' }, isArray: true }

我将扩展名更改为.htm,因为我不想为IIS express添加另一个处理程序。那个文件扩展名不是问题,因为我可以看到手机列表。现在当我点击每部手机时,我应该能够从json文件中看到它的详细描述,这是另一个文件夹。 该文件夹是:/Content/PhoneData/{all the various phone data json files here}

目前我找不到404,因为详细信息文件位于/Content/PhoneData/motorola-xoom-with-wi-fi.json.htm,但我点击的网址为/MyAngularScripts/motorola-xoom-with-wi-fi.json.htm

如何修改我的服务,因为它现在允许两个不同的URL?

当前服务代码:

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

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

获取手机列表的当前控制器代码:$scope.phones = Phone.query();

用于获取所选手机详细信息的当前控制器代码:

 $scope.phone = Phone.get({ phoneId: $routeParams.phoneId }, function (phone) {
      $scope.mainImageUrl = phone.images[0];
  });

如何修改控制器代码以调用服务?

1 个答案:

答案 0 :(得分:0)

是的,您可以为每个操作指定网址

 return $resource(
           "/MyAngularScripts/:phoneId.json.htm",
           { Id: "@Id" },
           {
               'get':{url:'/Content/PhoneData/'+:phoneId+'json.html},
               'query' : {url:'/MyAngularScripts/jsonPhonedata.json.html'},

           }
      );