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

时间:2014-03-24 13:58:58

标签: php angularjs symfony angularjs-filter

在我正在处理的应用程序中,我需要添加一些过滤器,例如:已批准,带有文档,已批准文档和其他一些过滤器。所有这些过滤器都基于由PHP控制器执行的对MySQL的MySQL查询(我使用Symfony2),并且该控制器上的函数将返回格式良好的JSON。我的问题是:我可以根据这种行为为AngularJS编写过滤器吗?怎么样? (我的意思是只是为了理解流程的一个小例子)

1 个答案:

答案 0 :(得分:1)

我认为你可以通过类似下面的代码来做:

//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>

您还需要将开始和结束符号更改为不同的内容(例如{[{}]}interpolateProvider
现在您需要定义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中的数据进行排序,速度更快,角度输出只需转储数据