Javascript AngularJS:意外的ngResource get()行为
我正试图通过$resource服务从我的angular应用程序发出一个简单的GET请求,所以没有必要说我是angular的新手。由于我的服务器端以RESTfull方式运行,所以我尝试使用这个资源。在尝试从Angular应用程序生成GET请求之前,我测试了资源的可用性,并在请求时返回预期信息 我的服务:Javascript AngularJS:意外的ngResource get()行为,javascript,angularjs,Javascript,Angularjs,我正试图通过$resource服务从我的angular应用程序发出一个简单的GET请求,所以没有必要说我是angular的新手。由于我的服务器端以RESTfull方式运行,所以我尝试使用这个资源。在尝试从Angular应用程序生成GET请求之前,我测试了资源的可用性,并在请求时返回预期信息 我的服务: services.factory('ScreenInitializer', ['$resource', function($resource) { return $resource('/a
services.factory('ScreenInitializer', ['$resource', function($resource) {
return $resource('/angular/screenInitializer/:initializerParameter',
{initializerParameter : '@sectionName'});
}]);
我的控制器:
我的期望:
根据我所读的书和网络中的一些示例,我期望资源URL中的参数initilizeParam被替换为我传递给.get方法的参数,从而在
本地主机:8080/angular/ScreenInitializer/homePageSearchBy
实际发生的情况:
是一个GET请求,其中homePageSearchBy作为参数-localhost:8080/angular/screenInitializer?sectionName=homePageSearchBy传递。因此,服务器响应404-未找到资源。这是预期的,因为它位于…/screenInitializer/homePageSearchBy
我的问题:
我的期望是错误的,还是我使用ngResource的方式不好
谢谢 我更喜欢新建它,但如果将空对象传递给get,它将工作。见下文
$scope.screen = new ScreenInitialize({sectionName: "homePageSearchBy"});
$scope.screen.$get(function(result){ .. do something ..}, function(error){ .. do something ..})
示例plunkr显示了您必须检查的URL:
代码:
此调用的url:
从文档中:
如果参数值的前缀为@,则该参数的值将从对非GET操作有用的数据对象中提取
那么这个
{initializerParameter : '@sectionName'}
与GET操作无关。还有这个
{sectionName: "homePageSearchBy"}
追加sectionName参数,因为URL模板不包含sectionName。你需要的是
ScreenInitializer.get({initializerParameter : "homePageSearchBy"})
为什么不直接返回$resource'/angular/screensinitializer/:sectionName';?非常感谢你的回答。它完全按照我的预期工作。糟糕的是我不太明白为什么,但这是一个调查的问题。这是一个有效且良好的解决方案!然而,我的案例非常简单,下面的zeroflagL为我的简单问题提供了非常容易理解的解决方案。但是,如果有人获得了该主题的链接,请记住上面的解决方案是有效的!谢谢zeroflagL,它工作得很好。似乎我在Angular中理解参数化URL的方式非常糟糕:。
{initializerParameter : '@sectionName'}
{sectionName: "homePageSearchBy"}
ScreenInitializer.get({initializerParameter : "homePageSearchBy"})