我想过滤所提供的路线参数显示的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'
})
答案 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>