以正确的方式过滤控制器中的json数据

时间:2014-01-31 16:41:25

标签: javascript json angularjs

(还有其他问题,但都没有帮助我)

嗨,我想知道这是否是正确的方法来过滤我从服务中得到的结果,我只显示一个结果(如细节)。

我知道我可以使用ng-repeat并在视图中对其进行过滤,这是最干净的,但我想要有更多的控制权,因为我将重新使用控制器中的一些数据进行其他操作。

现在我正在这样做:

$scope.savedEvents = Event.getPayedEvents(); //gets a list from service

//Goes through entire list and checks for a match   
angular.forEach($scope.savedEvents, function(event) {
    if (event.IdEvent == $stateParams.eventId) {
        $scope.showEvent = event;
    }
});
//now if there is a match I can use $scope.showEvent.eventName etc

不确定使用$ filter返回只有一个具有正确IdEvent的事件会更容易。或者如果有人有更好的解决方案,请告诉我。

感谢

1 个答案:

答案 0 :(得分:1)

我没有看到你所拥有的任何问题,但你可以注入$filter服务并执行以下任务:

$scope.showEvent = $filter('filter')($scope.savedEvents, { IdEvent: $stateParams.eventId });

编辑:这是一种将结果解析为返回数组中单个值的简单方法:

var showEvents = $filter('filter')($scope.savedEvents, { IdEvent: $stateParams.eventId });
$scope.showEvent = showEvents && showEvents.length ? showEvents[0] : null;

在CoffeeScript中,它更简洁:

$scope.showEvent = $filter('filter')($scope.savedEvents, { IdEvent: $stateParams.eventId })?[0]