我有一个页面,该页面将淡出以显示新内容(来自其他视图)。
一般而言,我们应该考虑什么?
我应该在哪里挖掘才能实现这一目标?
我应该通过使用某种ajax来调用另一个视图中的视图吗?
class EquipasController extends OccControllerAction{
public function init(){
if ($this->getRequest()->isXMLHttpRequest()) {
$this->_helper->layout()->setLayout('blank');
//$this->_helper->layout()->disableLayout();
$logger = $this->getInvokeArg('bootstrap')->getResource('Log');
$logger->debug('AJAX Call');
}
}
public function listaAction()
{
echo ("I'm HERE??");
$dados = array('dados1', 'dados2', 'dados3');
}
}
<h1>Tests...</h1>
<a href="<?php echo $this->url(array("controller"=>"equipas","action"=>"lista"), null, true); ?>" class="ajaxloader">Mostra Lista Sff</a>
<div id="testresults">
<h1>Esta é uma coisa que aparece sempre.</h1>
</div>
<script type="text/javascript">
$(function() {
$('.ajaxloader').click(function(event) {
var target = $(this).attr('href');
window.location.hash = target;
$.ajax({
url: target,
success: function(data) {
$('#testresults').html(data);
}
});
return false;
});
});
</script>
当我第一次加载页面时,一切正常。 当我点击链接时,我实际上得到一个ajax调用(因为我注意到没有刷新)。 显示时,它会再次显示所有页面。
它不显示我放在listaAction上的回声! : - (
更新
当我在浏览器上看到我的链接网址时,我看到: http://mypage.org/equipas/registo#/equipas/lista
在锚上我有: http://mypage.org/equipas/lista
问题可以在这里吗?
答案 0 :(得分:1)
我以前做过这件事。这是我所做的精简版。
有一个'空白'布局。这排除了任何全局标题/内容/ css。
如果请求是ajax,请使用“智能”控制器init()
或插件,在默认布局和空白布局之间切换。这是我的(剥离的)控制器代码:
类TestController扩展了Zend_Controller_Action {
public function init()
{
/* Initialize action controller here */
if ($this->getRequest()->isXMLHttpRequest()) {
$this->_helper->layout()->setLayout('blank');
$logger = $this->getInvokeArg('bootstrap')->getResource('Log');
$logger->debug('AJAX Call');
}
}
public function indexAction()
{
// render the default page
}
public function speedAction()
{
// Do stuff render something
}
public function somethingelseAction()
{
// do something else render something.
}
}
让您的初始视图呈现目标div,以及您想要进入该目标的一些链接。这是我的index.phtml:
<h1>Tests...</h1>
<a class="ajaxloader"
href="<?php echo $this->url(array('controller'=> 'test', 'action' => 'speed'), null, true);?>">Speed</a>
<a class="ajaxloader"
href="<?php echo $this->url(array('controller'=> 'test', 'action' => 'somethingelse'), null, true);?>">Something Else</a>
<div id="testresults">
<h1>Default stuff to show.</h1>
</div>
设置一些jQuery代码(无论你喜欢)附加到这些'ajaxloader'链接并将结果定位到'testresults'div。这是一些基本的JS:
<h1>Tests...</h1>
<a class="ajaxloader"
href="<?php echo $this->url(array('controller'=> 'test', 'action' => 'speed'), null, true);?>">Speed</a>
<a class="ajaxloader"
href="<?php echo $this->url(array('controller'=> 'test', 'action' => 'somethingelse'), null, true);?>">Something Else</a>
<div id="testresults">
<h1>Default stuff to show.</h1>
</div>
点击所有具有“ajaxloader”类的链接将通过ajax加载并放入'testresults'div。
答案 1 :(得分:0)
如果您的网页导致部分淡出,那么您必须使用JavaScript(或CSS动画或IE旧的,可怕的适当性,meta
标记)。
我会使用JavaScript通过AJAX获取视图,并将其加载到页面上的元素中。