2014-07-09 55 views
0

我想过滤由提供的路由参数显示的JSON。我有一个列表页面,其中显示了所有的json数据和一个详细信息页面,我只想在routeparam中显示与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' 
    }) 
+0

你可以发布你的json吗? – sylwester

+0

目前我的json配置非常简单。 {“_id”:ObjectId(“53bc36b8b7bbbf77208dec62”),“name”:“这是来自客户端”,“__v”:0} – byrdr

回答

0

您的JSON是无效的,但如果它有这样的格式:

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

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

但最好的o ('servicesDetail',['$ scope','HC','$ resource','$')将服务发送到服务器,并从服务器获取单个服务而不是服务数组,然后将它们过滤掉

app.controller routeParams', 'filterFilter',

函数($范围,HC,$资源,$ 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> 
+0

感谢您的帮助。出于某种原因,在我的渲染视图中返回一个空数组。 – byrdr

+0

@byrdr请更新您的看法就像在回答它会更容易找到什么是错 – sylwester

+0

测试返回此: SERVICEID: [ { “_id”:“53bc36b8b7bbbf77208dec62”, “名”:“这是从客户端”, “__v”:0 }, { “_id”: “53bc36bbb7bbbf77208dec63”, “名称”: “这是从客户端”, “__v”:0 } ] [] – byrdr