【问题标题】:Yii & Bootstrap widgets not working after second AjaxYii & Bootstrap 小部件在第二个 Ajax 之后无法工作
【发布时间】:2014-01-07 10:03:52
【问题描述】:

为了改善初始页面加载,我正在创建的页面上的大部分内容仅在需要时加载。为此,我通过 ajax 调用使用以下代码。

$this->renderPartial('_callhistory', array(
                        'modelCalls'=>$modelCalls,
                        'fid'=>$fid,                        
), false, true);

这工作正常,所有小部件都工作。它会导致主题设计出现问题,但目前这不是主要问题。

我遇到的问题是有时需要再次调用 ajax 来更新视图。为此,我使用相同的参数调用完全相同的 ajax 函数,但在第二次调用时,所有小部件(即:TbSelect2 和 CJuiDatePicker)都停止工作,而是得到标准选择和日期文本框。这反过来又会破坏客户端验证。

其他问答提到.unbind(),这是要走的路吗?如果是这样,我是否正确地说所有小部件元素都需要在 ajax 调用之前解除绑定?

谢谢,我也会发布我的 Ajax,请注意它会处理所有类似这样的更新。

function renderSectionView(fid, viewid, headerid, panelid, extraparams){
    var panel = $('#'+panelid);
    panel.html("<img src='images/ajax-loader-bar.gif' class='loadingbar' />");

    var param = {   'fid':fid,
            'viewid':viewid
            };  

    var url = controller_url_builder('SubViewAjax', param);

    var jqxhr = $.post( url, extraparams, function(data) {
        panel.html(data);
    })
    .done(function() {
        renderedlist.push(viewid+fid);
    })
    .fail(function() {
        panel.html("<span class='error'>There has been an error, please refresh the page and try again</span>");
    })
    .always(function() {
        scrollToAcc(headerid);
    });
}

【问题讨论】:

    标签: jquery ajax twitter-bootstrap yii zii-widgets


    【解决方案1】:

    感谢这里,我终于找到了答案:

    Yii Framework Forum: ajax and widgets

    诀窍是在控制器中呈现小部件,但将输出存储为变量,如下所示:

    $html = $this->widget( $className,  $properties=array ( ), TRUE);
    

    注意:最后的 'true' 参数允许您将结果放入 $html 变量中。

    然后在客户端脚本的帮助下呈现您的脚本。

    Yii::app()->getClientScript()->renderBodyBegin($html);
    Yii::app()->getClientScript()->renderBodyEnd($html);
    

    然后只需将变量传递给视图(我正在通过 renderPartial 进行)并在需要小部件的地方使用 echo $html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-02
      • 2013-04-27
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多