我在使用CGridView和一个使用javascript的自定义格式化程序时遇到问题。当CGridView触发任何形式的Ajax请求时,我的可与javascript一起使用的Formatter停止工作。
让我们尝试一个简单的例子:
格式化程序
class DFormatter extends CFormatter {
public function formatTest(){
$js = <<<EOD
console.log("test");
EOD;
$cs = Yii::app()->getClientScript();
$cs->registerScript("testjs", $js);
return false;
}
}
风景:
<?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',
),
),
)); ?>
在第一个Ajax请求之后,格式化程序中使用的javascript代码停止工作。在CGridView Widget进行的每个ajax调用之后,如何使我的javascript代码正常工作?
谢谢。
您不应该将脚本放入格式化程序中。
消除:
$js = <<<EOD
console.log("test");
EOD;
$cs = Yii::app()->getClientScript();
$cs->registerScript("testjs", $js);
配置网格视图:
<?php $this->widget('zii.widgets.grid.CGridView', array(
//.. other options
// ADD THIS
'afterAjaxUpdate' => 'function() { afterAjaxUpdate(); }',
加入<head>
的/layouts/main.php:
<script src="<?= Yii::app()->getBaseUrl(true); ?>/js/myCustomJS.js"></script>
在/js/myCustomJS.js创建新的JS文件:
function afterAjaxUpdate() {
// do your formatting here
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句