(还有其他问题,但都没有帮助我)
嗨,我想知道这是否是正确的方法来过滤我从服务中得到的结果,我只显示一个结果(如细节)。
我知道我可以使用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的事件会更容易。或者如果有人有更好的解决方案,请告诉我。
感谢
答案 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]