2014-02-06 40 views
0

我试图动态添加内容时,通过从jQuery获取控制器回显视图部分点击一个选项卡,数据返回就好,但任何headScript()声明我在这部分没有被设置在页眉中,在从这个视图DO调用的其他部分中做出的声明具有appendFile操作成功。我假设这是因为有一些preDispatch发生在通过谐音去,并追加用HeadScript项目时,我动态地从阿贾克斯获取负载的部分代码,没有发生标题的页面加载:Zend Framework 1从部分呈现从控制器的头部

$.ajax({ 
    url: sourceUrl, 
    method: 'get', 
    beforeSend: function(){ 
     $('a[href="'+href+'"]').addClass('load').tab('show'); 
    }, 
    success: function(data){ 
     console.log(data); 
     $("#"+tabID+"-content").html(data); 
     $('a[href="'+href+'"]').removeClass('load'); 
    }, 
    error: function(data){ 
     $("#"+tabID+"-content").html('There was an issue loading the tab. Please try again.'); 
     $('a[href="'+href+'"]').removeClass('load'); 
    } 
}); 

这个电话有没有布局,并简单的动作相呼应的部分:

$this->_helper->_layout->disableLayout(); 
echo $this->view->partial('device/pool-graph.phtml', 
        array('id' => $id)); 

任何<?php $this->headScript()->appendFile(); ?>操作似乎并没有给JavaScript附加到头部,有另一种方式来做到这一点,除了包括在基本<script src='/js/script.js'>标签部分?我宁愿不这样做。

回答

1

有没有参与头脚本帮助preDispatch,来电助手简单的“排队”,然后由像<?=$this->headScript()?>回声通话,你可能在你的布局输出script标签。由于您的控制器操作禁用了布局,所以此调用不会发生。

你说你不想在你的部分输出脚本标签,但这是解决你的问题最简单的方法。如果你想,因为你正在使用的应用程序的其他地方的部分,以避免这种情况,稍微凌乱的解决方案可能是输出后使用辅助脚本标记您的部分:

$this->_helper->_layout->disableLayout(); 
echo $this->view->partial('device/pool-graph.phtml', 
       array('id' => $id)); 
echo $this->view->headScript();