[英]AngularJS: Unexpected ngResource get() behaviour
我试图通过$ resource服务从我的角度应用程序触发一个简单的GET请求(因此不必说我是Angular的新手)。 由于我的服务器端以RESTfull方式运行,因此我尝试使用漂亮的Angular ngResource。 在尝试从Angular应用程序生成GET请求之前,我测试了资源的可用性,并在请求时返回期望的信息。
我的服务:
services.factory('ScreenInitializer', ['$resource', function($resource) {
return $resource('/angular/screenInitializer/:initializerParameter',
{initializerParameter : '@sectionName'});
}]);
我的控制器:
app.controller('HomePageController', ['$scope', 'ScreenInitializer', function($scope, ScreenInitializer) {
$scope.searchByOptions = ScreenInitializer.get({sectionName: "homePageSearchBy"});
// Some irrelevant stuff here...
}
我的期望:
根据我读过的书和网络上的一些示例,我期望的是资源URL中的参数initilizeParam
被替换为传递给.get()
方法的参数,结果在GET请求
本地主机:8080 / angular / screenInitilizer / 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 ..})
$scope.searchByOptions = ScreenInitializer.get({}, {sectionName: "homePageSearchBy"});
显示网址的示例plunkr(您必须检查):
http://embed.plnkr.co/kQsMujk9IgGxdxSE2g0E/
码:
var Screen = $resource(
'/angular/screenInitializer/:initializerParameter',
{initializerParameter : '@sectionName'});
$scope.screen = Screen.get({}, {sectionName: "homePageSearchBy"});
调用的URL:
http://run.plnkr.co/angular/screenInitializer/homePageSearchBy
从文档:
如果参数值以@开头,则将从数据对象中提取该参数的值(对非GET操作有用)。
所以这
{initializerParameter : '@sectionName'}
与GET操作无关。 和这个
{sectionName: "homePageSearchBy"}
追加sectionName
参数,因为URL模板不包含sectionName
。 您需要的是
ScreenInitializer.get({initializerParameter : "homePageSearchBy"})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.