2016-05-24 80 views
0

是否可以獲取render()(Symfony2)方法發送的響應對象?使用Angular捕獲Symfony 2中render()方法發送的響應對象

一個例子:

public function indexAction(){ 

     $params = array('Hi' =>'Hello world', 'userName' =>'Jack'); 

     return $this->render('exampleBundle:Default:index.html.twig', $params); 
    } 

我完全能夠捕捉到VAR $params及其在html.twig文件內容,但我想不出如何獲取這些內容是在JavaScript渲染使用角度的視圖。爲了以防萬一,我嘗試了許多荒唐的事情,但他們顯然沒有工作。

也許根本不可能,我需要重新設計它,或者在文檔加載後創建新的ajax調用,而不是通過render()方法傳遞內容。我真的不太確定,如果沒有提出Ajax請求,我可以達到這個目標嗎?

回答

0

這種方法在我看來是一件壞事。大多數現代客戶端應用程序的理念是儘可能快地從服務器加載網頁,並通過xhr請求加載數據。

說,如果你需要或想要做到這一點,你可以在型動物的方式實現它:

我沒有嘗試過的例子,所以這可以包含一些語法錯誤:

1- JS香草方法;在html.twig

<script type="text/javascript"> 
    window.nameSpaceOfMyApp = window.nameSpaceOfMyApp || {}; 
    window.nameSpaceOfMyApp.exchange = window.nameSpaceOfMyApp.exchange || {}; 
    window.nameSpaceOfMyApp.exchange.params = JSON.parse({{$params |json_encode()}}); 
</script> 

2-更多「角之路」不超載全局命名空間和更好的測試......如果你有負載angular.js在這一點上,你可以在樹枝模板創建自己的角度App的主模塊在html.twig(如果你不能使用你的主要模塊,你可以使用一個新的模塊,並要求它作爲你的主模塊的依賴) :

<script type="text/javascript"> 
    angular.module('moduleName',[<dependencies>,...]) 
    .value('exchange',{ 
     params: JSON.parse({{$params |json_encode()}}) 
    }) 
</script> 

以後你可以注入該值在你需要它。

angular.module('moduleName').controller('nameOfController',['exchange', function(exchange){ 
    console.log(exchange.params) 
}]); 
+0

一旦'app.value(...)'完成了,我該如何將它注入控制器? – Drumnbass

+0

我編輯了我的答案,最後一個代碼塊是如何在控制器中注入的,你可以在https://docs.angularjs.org/guide/providers中看到更多關於值的信息。 – jmoreno

相關問題