【发布时间】:2013-01-28 02:27:09
【问题描述】:
我正在使用 jQuery 在 Yii 中扩展 CGridView,以便在切换页面时记住选中的行。页面是使用 AJAX 加载的,所以我认为当请求完成并呈现新页面时,我希望我的代码能够介入,这很神奇。但是,我似乎找不到任何文档表明在新页面完成渲染时触发了任何事件。
我可以使用 DOM 侦听器,但我认为对整个页面使用一个事件会更好。
【问题讨论】:
标签: javascript yii
我正在使用 jQuery 在 Yii 中扩展 CGridView,以便在切换页面时记住选中的行。页面是使用 AJAX 加载的,所以我认为当请求完成并呈现新页面时,我希望我的代码能够介入,这很神奇。但是,我似乎找不到任何文档表明在新页面完成渲染时触发了任何事件。
我可以使用 DOM 侦听器,但我认为对整个页面使用一个事件会更好。
【问题讨论】:
标签: javascript yii
你可以使用afterAjaxUpdate(因为你的页面是用ajax加载的):
$this->widget('zii.widgets.grid.CGridView', array(
// ... options ...
'ajaxUpdate'=>true,
'afterAjaxUpdate'=>'aFunctionThatWillBeCalled', //
// ... more options ...
));
你可以像这样添加js函数:
Yii::app()->clientScript->registerScript('some-script-id','function aFunctionThatWillBeCalled(id, data){
console.log("id is "+id);
// your jquery code to remember checked rows
}');
【讨论】:
yii世界的新人,你能详细解释一下代码吗Yii::app()->clientScript->registerScript('some-script-id','function aFunctionThatWillBeCalled(id, data){ console.log("id is "+id); // your jquery code to remember checked rows }');
aFunctionThatWillBeCalled是什么,肯定是和widgetsafterAjaxUpdate功能类似,除了我什么都不懂
registerScript 的文档。 registerScript 用于方便地将 javascript 添加到您的视图中,在文档中您还会看到其他参数,例如 $position,它将将 javascript 添加到最终 html 中的适当位置。在上面的例子中,定义了函数aFunctionThatWillBeCalled,并在registerScript的帮助下添加到视图中。
afterAjaxUpdate 中,我们可以只传递函数名,而不是传递整个函数定义。