2014-03-24 176 views
1

在我正在處理的應用程序中,我需要添加一些過濾器,例如:批准的,帶有文檔的,已批准的文檔以及其他一些文檔。所有這些過濾器都基於PHP控制器執行的MySQL查詢(我使用Symfony2),並且該控制器上的功能將返回格式良好的JSON。我的問題是:我可以根據這種行爲爲AngularJS編寫過濾器嗎?怎麼樣? (我的意思是一個小例子只是爲了瞭解流量)基於PHP服務器端請求/響應的AngularJS過濾器

+0

如果以角度顯示數據,則不關心數據來自何處。 '{{obj.myData | myFilter}}' – Merlin

+0

@Lorenzo我不跟着你,你能解釋一下你的答案嗎? – ReynierPM

+0

好,所以可能是我沒有很好地理解你的問題。你知道角度過濾器嗎?角度過濾器用於格式化你顯示的值 – Merlin

回答

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

在你的樹枝文件,你可以有類似

<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
現在,您需要定義諸如

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

你可以找到更多關於它的信息一sortData js函數上Angular filter

我會建議通過Symfony使用DB數據速度更快排序和在角度輸出中只是轉儲數據

+0

你的代碼對我有意義,但我仍然感到困惑,因爲它不僅僅是一個過濾器,現在有四個:「沒有文檔」,「批准「,」活動「和」非活動「,每個在Symfony2端調用不同的控制器函數,我沒有測試你的代碼,但它會適用於我的需求?我正在使用的解決方案是使用'ng-change',然後在Angular控制器中使用'.get'調用正確的函數是醜陋的,但是我發現的只有這麼屁 – ReynierPM

+0

您可以應用多過濾器基礎這個鏈接http:/ /docs.angularjs.org/guide/filter,但如果我明白你想每個過濾器調用另一個Ajax,對吧?如果你有全部數據,那麼爲什麼要調用ajax來應用過濾器?您可以通過Symfony控制器獲取所有數據,並通過Angular JS應用過濾器(或者我可能不正確)。此外,我沒有看到任何代碼,所以我只準備了一個簡單的示例(我不確定它應該如何適用於您的項目) – Javad

相關問題