繁体   English   中英

AngularJS:意外的ngResource get()行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM