ZF2 jQuery DatePickers在Ajax对话框中不工作



我的Zend Framework 2 Web应用程序通过对话框打开了一些操作。我在处理用Ajax调用的操作时使用此方法:

/**
 * Display content only on ajax call.
 * @param ZendMvcMvcEvent $e
 */
public function onDispatch(ZendMvcMvcEvent $e)
{
    $app = $e->getParam('application');
    $layout = $app->getMvcEvent()->getViewModel();
    if($app->getRequest()->isXmlHttpRequest()) {
        $controller = $e->getTarget();
        $controller->layout('application/ajax/ajax');
        $layout->setTerminal(true);
    }
}

问题在于,JQuery的DateTime选择器似乎不起作用。因为此HTML动态添加到页面。

我认为解决方案可能是修改此onDispatch方法,因此它还重新包含一些JS文件。或者,还有更好的方法?我只是以为将硬编码的JS文件添加到我的ajax.phtml文件中也可以。

但是,再次,我想知道是否存在更好的方法,例如重新加载页面上的JS或其他内容。

是的,一种方法是将脚本添加到您的ajax.phtml中。

我前一段时间做的事情是将所需的脚本作为响应标头发送:

$requiredScripts = array(
    '/some/js/file.js',
    '/another/js/file.js'
);
$this->getResponse()->getHeaders()
    ->addHeaderLine('x-scripts: ' . json_encode($requiredScripts));

然后在您的JS中:

// globally listen for the ajax-requests
$(document).ajaxSuccess(function(res, status, xhr) { 
    var requiredScripts = xhr.getResponseHeader("x-scripts");
    if (requiredScripts) {
        jQuery.each(requiredScripts, function(index, scriptSrc) {
            jQuery.getScript(scriptSrc);
        });
    }
});

相关内容

最新更新