Luego de tanto luchar pudimos hallar la solución de esta preocupación que muchos usuarios de nuestro sitio presentan. Si tienes algún detalle que compartir puedes compartir tu comentario.
Solución:
Puede utilizar el servicio de $filter existente. Actualicé el violín arriba http://jsfiddle.net/gbW8Z/12/
$scope.showdetails = function(fish_id)
var found = $filter('filter')($scope.fish, id: fish_id, true);
if (found.length)
$scope.selected = JSON.stringify(found[0]);
else
$scope.selected = 'Not found';
La documentación angular está aquí http://docs.angularjs.org/api/ng.filter:filter
Sé si eso te puede ayudar un poco.
Aquí hay algo que traté de simular para ti.
Echa un vistazo a jsFiddle;)
http://jsfiddle.net/migontech/gbW8Z/5/
Creó un filtro que también puede usar en ‘ng-repeat’
app.filter('getById', function()
return function(input, id)
var i=0, len=input.length;
for (; i
Uso en el controlador:
app.controller('SomeController', ['$scope', '$filter', function($scope, $filter)
$scope.fish = [category:'freshwater', id:'1', name: 'trout', more:'false', category:'freshwater', id:'2', name:'bass', more:'false']
$scope.showdetails = function(fish_id)
var found = $filter('getById')($scope.fish, fish_id);
console.log(found);
$scope.selected = JSON.stringify(found);
]);
Si hay alguna pregunta, házmelo saber.
Para agregar a la respuesta de @migontech y también a su dirección su comentario de que "probablemente podría hacerlo más genérico", aquí hay una manera de hacerlo. Lo siguiente le permitirá buscar por cualquier propiedad:
.filter('getByProperty', function()
return function(propertyName, propertyValue, collection)
var i=0, len=collection.length;
for (; i
La llamada a filtrar se convertiría entonces en:
var found = $filter('getByProperty')('id', fish_id, $scope.fish);
Tenga en cuenta que eliminé el operador unario (+) para permitir string-coincidencias basadas...
Nos puedes favorecer nuestra publicación mostrando un comentario o dejando una puntuación te damos las gracias.