0
CGridView 및 javascript를 사용하는 하나의 사용자 정의 포매터에 문제가 있습니다. CGridView가 어떤 종류의 Ajax 요청을 트리거 할 때 javascript와 작동하는 Formatter는 작동을 멈춘다.CGridView AjaxRequests가 자바 스크립트 사용자 정의 CFormatter를 깨습니다.
의 하나의 사소한 예를 봅시다 :
뷰
class DFormatter extends CFormatter {
public function formatTest(){
$js = <<<EOD
console.log("test");
EOD;
$cs = Yii::app()->getClientScript();
$cs->registerScript("testjs", $js);
return false;
}
}
포매터 : 첫 번째 Ajax 요청 후
<?php $this->widget('zii.widgets.grid.CGridView',
array(
'id' => 'development-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'id',
array(
'name' => 'testField',
'type' => 'test',
),
array(
'class' => 'CButtonColumn',
),
),
)); ?>
이 포맷터에서 사용되는 자바 스크립트 코드가 작동을 멈 춥니 다, 어떻게 CGridView 위젯으로 만든 모든 아약스 호출 후에 자바 스크립트 코드를 사용할 수 있습니까?
감사합니다.
왜 안 되니? Jacvascript와 CSS는 프리젠 테이션에 사용되며 포맷터는 프리젠 테이션 클래스가 아닙니다. – user1648170
아니요, HTML 태그로 출력을 래핑하는 등 구조적인 마크 업에 포맷터를 사용해야합니다. HTML 태그는 클라이언트에서 CSS로 스타일을 지정합니다. 그리드가 로딩을 마칠 때마다 자바 스크립트를 실행하려면이 방법을 사용하는 것이 좋습니다. –