2014-02-06 70 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();