Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
从angularjs中的集合中获取单个项_Angularjs_Restangular - Fatal编程技术网

从angularjs中的集合中获取单个项

从angularjs中的集合中获取单个项,angularjs,restangular,Angularjs,Restangular,我是AngularJS新手,需要使用RESTAPI。我可以使用两种不同的方式从服务器成功加载项目集合,但无法通过其id从此列表(填充后)中获取单个项目。我不想再次从服务器获取该项目 当我尝试使用angularjs rails资源时,我可以使用Project.query()获取项目列表,并将其存储在$rootScope.projects中。然而,我现在想知道如何通过id从列表中获取一个项目(实际上它不是一个数组,而是一个承诺) 我还使用$rootScope.projects=restangular

我是AngularJS新手,需要使用RESTAPI。我可以使用两种不同的方式从服务器成功加载项目集合,但无法通过其id从此列表(填充后)中获取单个项目。我不想再次从服务器获取该项目

当我尝试使用
angularjs rails资源时
,我可以使用
Project.query()
获取项目列表,并将其存储在
$rootScope.projects
中。然而,我现在想知道如何通过id从列表中获取一个项目(实际上它不是一个数组,而是一个承诺)


我还使用
$rootScope.projects=restangular.all(“projects”).getList()和
project=$rootScope.projects.get(id)
尝试了
restangular
。但这也失败了,因为它似乎返回一个集合而不是一个项目

对于
angularjs rails资源
您应该能够只使用
get(id)
。它将始终返回一个承诺,如果您在模板中使用它,这是很好的,因为模板理解承诺

如果你不想要承诺,你可以使用
然后

Project.get(1234).then(function (project) {
    //project is NOT a promise
    $scope.project = project;
});
而不是

//project is a promise, but you're template is cool with that
$scope.project = Project.get(1234); 

要返回单个项目,请使用:

$scope.project = Project.get(id: some_id); 

但这会对服务器进行另一次调用。我想从$rootScope.projects中存储的预加载列表中获取该项。我误解了,也许您可以使用forEach循环浏览它们。。。为你的工厂添加一个方法。对不起,我真的不知道怎么做。你能给我一个完整的例子,增强angularjs rails资源网站的基本例子吗?看看“添加自定义方法”下面的内容。但我真的认为你应该重新考虑你的方法。如果您只依赖最初获得的列表,则数据过时的风险更高。。。。为什么不做另一个请求呢?这不是休息的重点吗?