AngularJS基于PHP服务器端请求/响应进行过滤


AngularJS filters based on PHP server side request/response

在我正在处理的应用程序中,我需要添加一些过滤器,例如:approved, with documents, with documents approved和其他一些。所有这些过滤器都是基于PHP控制器(我使用Symfony2)对DB执行的MySQL查询,控制器上的函数将返回格式良好的JSON。我的问题是:我可以基于这种行为为AngularJS编写过滤器吗?如何?(我的意思是一个小例子,只是为了理解流程)

我认为你可以做一些类似下面的代码:

//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)
   ));
}

在你的twig文件中你可以输入类似

的内容
<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>

您还需要将开始和结束符号更改为不同的东西(如{[{}]})现在需要定义一个sortData js函数,如

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;
});

你可以在Angular filter

找到更多信息

我建议通过Symfony在DB中排序数据,Symfony更快,在角输出中只是转储数据