Angular使用$ route Params来过滤检索到的json数据

时间:2014-07-09 19:44:22

标签: json angularjs angular-routing

我想过滤所提供的路线参数显示的JSON。我有一个列表页面,显示所有的json数据和一个详细页面,我想在路线参数中显示与id匹配的json。

这是我的服务:

app.factory("HC", ["$resource", function($resource) {
    return {
        API: $resource('/api/hc')
    }
}]);

这是我的控制器,它正在显示所有结果。我如何通过requestParams过滤这些?

app.controller('servicesDetail', ['$scope', 'HC', '$resource', '$routeParams', function ($scope, HC, $resource, $routeParams ) { 


  HC.API.query(function(results) {
        $scope.services = results;
    });

  $scope.services = []

}]);

这是我的路线

.when('/services', {
            templateUrl: 'templates/services.html',
            controller: 'servicesController'
        })

    .when('/services/:serviceId', {
        templateUrl: 'templates/servicedetail.html',
        controller: 'servicesDetail'
    })

1 个答案:

答案 0 :(得分:0)

你的json无效,但如果它有这样的格式:

{ "_id" : "53bc36b8b7bbbf77208dec62", "name" : "this is from the client", "__v" : 0 }

您可以使用 filterFilter 服务,请参阅此处的演示http://jsbin.com/somob/1/edit?html,js,output

但最好的选择是将serviceId发送到服务器并从服务器获取单个服务而不是服务数组并在

之后过滤它们

app.controller('servicesDetail',['$ scope','HC','$ resource','$ routeParams','filterFilter',

函数($ scope,HC,$ resource,$ routeParams,filterFilter){

$scope.services = [];
HC.API.query(function (results) {
    $scope.services = results;
});



$scope.serviceId = $routeParams.serviceId;

$scope.serviceById = filterFilter($scope.services, {
    _id: $routeParams.serviceId
});

}]); HTML:

<!--just for testing -->
    <p>ServiceId : {{serviceId }}</p>

    <pre>{{serviceById |json}}</pre>