【问题标题】:Yii CGridView javascript event on paginationYii CGridView javascript分页事件
【发布时间】:2013-01-28 02:27:09
【问题描述】:

我正在使用 jQuery 在 Yii 中扩展 CGridView,以便在切换页面时记住选中的行。页面是使用 AJAX 加载的,所以我认为当请求完成并呈现新页面时,我希望我的代码能够介入,这很神奇。但是,我似乎找不到任何文档表明在新页面完成渲染时触发了任何事件。

我可以使用 DOM 侦听器,但我认为对整个页面使用一个事件会更好。

【问题讨论】:

    标签: javascript yii


    【解决方案1】:

    你可以使用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 }');
    • @UlugbekKomilovich,我一定会解释的,但首先你得告诉我这些台词你不明白吗?
    • 我知道了aFunctionThatWillBeCalled是什么,肯定是和widgetsafterAjaxUpdate功能类似,除了我什么都不懂
    • @UlugbekKomilovich,首先请查看registerScript 的文档。 registerScript 用于方便地将 javascript 添加到您的视图中,在文档中您还会看到其他参数,例如 $position,它将将 javascript 添加到最终 html 中的适当位置。在上面的例子中,定义了函数aFunctionThatWillBeCalled,并在registerScript的帮助下添加到视图中。
    • ... 另外在小部件的afterAjaxUpdate 中,我们可以只传递函数名,而不是传递整个函数定义。
    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多