En una aplicación en la que estoy trabajando necesito agregarAlgunos filtros como por ejemplo: aprobado, con documentos, con documentos aprobados y algunos otros. Todos estos filtros se basan en las consultas de MySQL a la base de datos realizadas por el controlador PHP (estoy usando Symfony2) y las funciones de esos controladores devolverán un JSON bien formado. Mi pregunta es: ¿puedo escribir filtros para AngularJS en función de este comportamiento? ? (Me refiero a un pequeño ejemplo solo para entender el flujo)
Respuestas
1 para la respuesta № 1Creo que puedes hacer algo similar al siguiente código:
//in your symfony controll
public function sampleAction() {
$data = $this->getDoctrine()->getManager()->getRepository("YourBundle:SampleEntity")->findAll()->toArray();
return $this->render("YourBundle:Views_Path:sampleTwigOutput.html.twig", array(
"data" = json_encode($data)
));
}
En tu archivo de ramitas puedes tener algo como
<div ng-init="mydata = {{ data|raw }}"></div>
<table id="sortedData">
<tr><th>T1</th><th>T2</th></tr>
<tr ng-repeat="data in mydata | filter:sortData">
<td>{[{data.name}]}</td>
<td>{[{data.phone}]}</td>
</tr>
También es necesario cambiar el símbolo de inicio y fin a algo diferente (como {[{
y }]}
) interpolateProvider
Ahora necesitas definir un sortData
js funcionan como
angular.module("MySortModule", []).
filter("sortData", function() {
// do all your stuffs to sort the data base on whatever you want
// set them all to out
return out;
});
Puedes encontrar más información al respecto en Filtro angular
Recomendaría ordenar los datos en la base de datos a través de Symfony, que es más rápido y en salida angular simplemente volcar los datos