0

ウィジェットはコントローラービュー上にある場合とない場合があり、一部のウィジェットはlistViewに影響を与えます。

CListViewのafterAjaxUpdateJSイベントでストールしました。ウィジェット-は、リストビューを更新する製品フィルターです。私の問題は、リストビューの更新後にフィルターを更新したい場合です。もちろん、リストビューで更新コードを構成することはできますが、この動作はフィルターウィジェットに属しているため、間違っていると思います。

ウィジェットで試してみました

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

しかし、ListView jsは以下になり、明らかにそれは悪い解決策です。

いくつかのパブリックウィジェットイベントについて考えているので、フィルターウィジェットを介してリストビューウィジェットにアドレス指定し、そこにイベントを配置できます。

多分誰かが関連する問題に直面したか、より良いアイデアを持っていますか?ありがとう。

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 に答える