0

小部件可以或不在控制器视图上,并且一些小部件会影响 listView。

我在 CListView 中的 afterAjaxUpdate JS 事件上停滞不前。小部件 - 是一个产品过滤器,用于更新列表视图。我的问题是当我想在更新列表视图后更新我的过滤器时。当然我可以在列表视图中配置更新代码,但我认为是错误的,因为这种行为属于过滤器小部件。

我在小部件中试过这个

$("#' . $this->listViewId . '").yiiListView.settings.afterAjaxUpdate = function(id, data) {
    console.log(id, data);
};

但是 ListView js 在下面,显然这是一个糟糕的解决方案。

我在考虑一些公共小部件事件,所以我可以通过过滤器小部件寻址到 listview 小部件并将事件放在那里。

也许有人遇到过相关问题或有更好的想法?谢谢。

4

1 回答 1

1

尝试这种方式为您的 CListView 添加 afterAjaxUpdate 方法。

<?php 
Yii::app()->clientScript->registerScript('handle_ajax_function', "
function addLoadingClass(id,result)
{
    $('.list-view-loading').show();
    $('li.previous').addClass('disable');
    $('li.next').addClass('disable');   
}
function removeLoadingClass(id,result)
{   
    $('li.previous').removeClass('disable');
    $('li.next').removeClass('disable');    
    try{
        $('.list-view-loading').hide(); 
    }catch(e){
        alert(e);
    }
}
");
?>

<?php
$this->widget('zii.widgets.CListView', array(
            'id'=>'handle',
            //'ajaxUpdate'=>false,
            'dataProvider'=>$data,
            'beforeAjaxUpdate'=>'addLoadingClass',
            'afterAjaxUpdate'=>'removeLoadingClass',
            'itemView'=>'myview',           
    )); 
?>
于 2012-08-29T05:27:02.253 回答