我刚刚开始使用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];
});
如何修改控制器代码以调用服务?
答案 0 :(得分:0)
是的,您可以为每个操作指定网址
return $resource(
"/MyAngularScripts/:phoneId.json.htm",
{ Id: "@Id" },
{
'get':{url:'/Content/PhoneData/'+:phoneId+'json.html},
'query' : {url:'/MyAngularScripts/jsonPhonedata.json.html'},
}
);