2010-04-29 6 views
2

Я новичок в работе Zend Frame. Я использую $ ajaxContext = $ this -> _ helper-> getHelper ('AjaxContext'); для добавления контекстов действий. У меня есть одна страница Index.phtml, а все остальные - страницы ajax.phtml. Я должен использовать некоторые java-скриптовые методы на страницах ajax.phtml. Но я не нашел способ ссылаться на js-файлы на страницах ajax.phtml. Я попытался добавить их в действие init и index контроллера, используя $ this-> view-> headScript() -> appendFile, хотя у меня есть ссылка, добавленная в источнике страницы, ни один из htese, похоже, не работает над содержимым ajax , Затем я попытался добавить его в действие для страницы ajax, тогда он не входит в исходный код страницы. Насколько я понял, $ this-> view-> headScript() -> appendFile добавит ссылку на файл на страницу макета и страницы ajax.phtml, макет будет отключен. Есть ли способ, чтобы я мог ссылаться на мои файлы js на страницах ajax.phtml?ajax in zend frame work

ответ

1

Я нашел два пути решения этой проблемы. Один из них заключается в том, что мы можем связать событие click для кнопки postbacked content ajax с помощью метода jquery.live(). Это зарегистрирует элемент в DOM, даже если элемент отсутствует во время загрузки страницы. Другим способом является перезагрузка javascript в успешности каждой обратной передачи ajax с использованием метода getScript(). Таким образом, все вновь добавленные элементы будут зарегистрированы и активны. если вы используете диалоги jquery, используя переменные, вам, возможно, придется их уничтожить, прежде чем перезагружать js.

1

Вы находитесь на правильном пути, но где вы эхо отошлите ViewHelper?

После добавления файлов с headScript вид Helper попробовать:

echo $this->headScript(); 
+0

Что я делаю в макет страницы – neo

+0

@rookie затем попробовать его в ajax.phtml не макете. – Alexar

0

Поместите этот код в ваш общедоступный функции контроллера:

public function indexController(){ 
    $this->_helper->viewRenderer->setNoRender(); 
    $Response = $this->getResponse(); 
    $Response->setBody(Zend_Json::decode($foo)) 
      ->setHeader('content-type', 'application/json', true); 
return null; 
} 
Смежные вопросы