Yii2 Pjax не будет регистрироваться при смене страницы Kartik Gridview - PullRequest
0 голосов
/ 13 февраля 2020

Я использую Kartik Gridview и перезагружаю свои JS через Pjax (я считаю, что это правильный способ сделать это). Проблема в том, что всякий раз, когда я меняю страницы с помощью LinkPager, мой JS (в основном) ломается на других страницах. Я полагаю, что это селекторы Jquery, но после попытки различных комбинаций я не дал результатов.

Откуда я go отсюда? Я в тупике.

Ниже мой JS:

Pjax::begin(['id' => 'lib_js', 'clientOptions' => ['showNoty' => false]]);

$url = Url::toRoute(['file/delete-file']);

$url2 = Url::toRoute(['file/toggle-public']);

$url3 = Url::toRoute(['file/reset-file-id']);

$script = <<< JS
    function deleteRow() {
        var keys = $('#library_grid').yiiGridView('getSelectedRows');
        if(keys.length !== 0){
            var len = keys.length
            krajeeDialog.confirm('Are you sure you want to delete these <b>(' + len + ')</b> file(s)?', function(out){
                if(out) {
                    //krajeeDialog.alert(keys);
                    $.ajax({
                        type: "POST",
                        url: '$url',
                        showNoty: false, // add this for disable notification
                        data: {keys: keys},
                        success: function(result){
                            $.pjax.reload({container: '#toast_pjax', timeout:5000});
                            $.pjax.reload({container: '#library_grid-pjax', timeout:5000});
                            $.pjax.reload({container: '#lib_js', timeout:5000});                            
                        }
                    });
                }
            });
        }
        else
        {
            krajeeDialog.alert("You must select a file(s).");
        }
    }

    $("#dltrowbtn").on('click', function() {
        deleteRow()
    });

    function sendToggleRequest(status, id) {
        $.ajax({
            type: 'POST',
            url:'$url2',
            showNoty: false, // add this for disable notification
            data:{status:status, id:id},
            success:function(data){
                //$.pjax.reload({container: '#lib_js', timeout:5000});
            }
        });
    }

    $("#rfrshbtn").on('click', function() {
        //$.pjax.reload({container: '#library_grid-pjax', timeout:5000});
        //$.pjax.reload({container: '#lib_js', timeout:5000});
        location.reload();
        return false;
    });

    function sendResetIdRequest(id) {
        $.ajax({
            type: 'POST',
            url:'$url3',
            showNoty: false, // add this for disable notification
            data:{id:id},
            success:function(data){
                $.pjax.reload({container: '#toast_pjax', timeout:5000});
                $.pjax.reload({container: '#library_grid-pjax', timeout:5000});
                $.pjax.reload({container: '#lib_js', timeout:5000});                
            },
        });
    }

    $(".resetbtn").on('click', function() {
        var id = $(this).attr("data-id");
        sendResetIdRequest(id);
    });
JS;

$this->registerJs($script, \yii\web\View::POS_READY);

Pjax::end(['id' => 'lib_js']);
...