角度过滤范围低至1键类型以准备发送

时间:2014-10-31 17:58:36

标签: javascript angularjs

所以我有一个拥有大量键值对的作用域,这样我就可以使用它并让它在发送之前做一堆东西。

我遇到的问题是我想在发送之前将该范围更改为id内部的一小部分密钥

所以我的范围有这样的对象:

 $scope.myScope = {name: name 1, id: 1, order: 1},  {name: name 2, id: 2, order: 2} 

我想把它变成

$scope.FilteredScope = {1,2};

只是id的。我想知道你是否可以在发送前在控制器内过滤这个范围?我只在重复之类的东西中使用过滤器。因此,在控制器内部,它会过滤掉ID并将它们放在可能只是发送ID的新范围内。这可能吗?

谢谢!

2 个答案:

答案 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] ,然后您可以发送它。

如果我的假设是正确的,请告诉我。如果不是,请用更多信息编辑您的问题,我将很乐意为您提供帮助