GridView를 사용하여 새 GridViewExtended 클래스를 만들었습니다. 그런 다음 pjax 이벤트를 한 번만 등록해야합니다. 간단한 예제 ...Yii2, GridView, registerJs를 한 번만 바인딩하십시오.
<?php Pjax::begin(); ?>
<?= GridViewExtended::widget([])
<?php Pjax::end(); ?>
...
<?php
$this->registerJs('
$(document).ready(function(){
$("#w0").on("pjax:click", function() {
$("#w0 .box").append($("<div class=\"overlay\"><i class=\"fa fa-refresh fa-spin\"></i></div>"));
});
$("#w0").on("pjax:complete", function(contents,options) {
$("#w0 .box .overlay").remove();
});
$("#w0 .box .overlay").remove();
});'
);
?>
그래서 js가 GridViewExtended 클래스에 등록 되었으면합니다. GridViewExtended :: run()을 재정의하고 거기에 등록하면이 js가 각 호출 (앞 부분)에 적용됩니다.
주먹 클릭 (예 : 페이지 매김)에서는 두 번째로 두 번 클릭하면됩니다 ... 그리고 이것은 전체 논리를 파열합니다.
보기에 등록하면 Ofcourse가 작동하지만 GridViewExtended에 등록하고 싶습니다.
도와주세요.
그리고 요점은 무엇입니까? 모든 태그에서 pjax는 각 호출마다 redifene \ rebind가 될 것입니다 ... 어떻게 든 외부에 등록해야하지만 gridview 모델에 등록해야합니다. – user1954544