所以我有一个拥有大量键值对的作用域,这样我就可以使用它并让它在发送之前做一堆东西。
我遇到的问题是我想在发送之前将该范围更改为id内部的一小部分密钥
所以我的范围有这样的对象:
$scope.myScope = {name: name 1, id: 1, order: 1}, {name: name 2, id: 2, order: 2}
我想把它变成
$scope.FilteredScope = {1,2};
只是id的。我想知道你是否可以在发送前在控制器内过滤这个范围?我只在重复之类的东西中使用过滤器。因此,在控制器内部,它会过滤掉ID并将它们放在可能只是发送ID的新范围内。这可能吗?
谢谢!
答案 0 :(得分:1)
您可以使用array.map(可能需要为旧版浏览器进行填充):
angular.module('MyModule', [])
.controller('MyController', function( $scope ) {
$scope.myScope = [
{name: 'name1', id: 1, order: 1},
{name: 'name2', id: 2, order: 2}
];
$scope.ids = $scope.myScope.map( function(obj){
return obj.id;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='MyModule' ng-controller='MyController'>
ids: {{ids | json}}
</div>
答案 1 :(得分:1)
首先 $ scope.myScope是一个正确的Javascript对象(在这种情况下它是一个映射对象的数组),它应该是以下形式:
$scope.myScope = [{name: "name 1", id: 1, order: 1}, {name: "name 2", id: 2, order: 2}]
其次,如果您希望 $ scope.filteredScope 是来自 $的所有 id 值的数组scope.myScope 对象。
因此可以像这样轻松完成
$scope.filteredScope = []
for(entry of $scope.myScope) $scope.filteredScope.push(entry.id)
这将导致输出数组,如 [1,2] ,然后您可以发送它。
如果我的假设是正确的,请告诉我。如果不是,请用更多信息编辑您的问题,我将很乐意为您提供帮助