2016-05-24 47 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

相关问题