Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:意外的ngResource get()行为_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS:意外的ngResource 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

我正试图通过$resource服务从我的angular应用程序发出一个简单的GET请求,所以没有必要说我是angular的新手。由于我的服务器端以RESTfull方式运行,所以我尝试使用这个资源。在尝试从Angular应用程序生成GET请求之前,我测试了资源的可用性,并在请求时返回预期信息

我的服务:

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"})