【发布时间】:2014-08-18 13:30:18
【问题描述】:
我昨天刚开始使用 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 中,但我将 URL 设为 /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];
});
如何修改控制器代码以同时调用服务?
【问题讨论】:
-
哪个是实际的url
#1 /MyAngularScripts/motorola-xoom-with-wi-fi.json.htm或#2 /Content/PhoneData/motorola-xoom-with-wi-fi.json.htm -
手机列表在 /MyAngularScripts/jsonPhonedata.json.htm 中,所选手机的详细信息在 /Content/PhoneData/motorola-xoom-with-wi-fi.json.htm 中
标签: javascript json angularjs asp.net-mvc-5 angularjs-service