我正在测试 ATK4 以决定是否可以使用它。其中一个场景是组和成员的状态页面,它应该自动重新加载包含动态组和成员信息的网格。
我已经实现的网格重新加载,如 Thread Agile 工具包中所述:如何自动重新加载网格
这是会员页面的代码:
<?php
class page_members extends Page {
function init(){
parent::init();
$page = $this;
$page->api->stickyGET('group_id');
$grid = $page->add('Grid');
$model = $grid->setModel('Member');
if ($_GET['group_id'])
$model->addCondition('group_id', $_GET['group_id']);
$page->js(true)->univ()->setInterval(
$grid->js()->reload()->_enclose()
,10000);
}
}
如果我使用group_id参数从浏览器调用它,它会像预期的那样工作。但是这个页面会从一个组页面调用到一个 frameURL 中,代码如下:
<?php
class page_groups extends Page {
function init(){
parent::init();
$page = $this;
$grid = $page->add('Grid');
$model = $grid->setModel('Group');
$grid->addColumn('button','members');
if($_GET['members']){
$grid->js()->univ()
->frameURL('Members' ,$page->api->url('../members',array('group_id'=>$_GET['members'])))
->execute();
}
$page->js(true)->univ()->setInterval(
$grid->js()->reload()->_enclose()
,10000);
}
}
如果我单击第 1 组中的“成员”按钮,第 1 组的成员页面会在一个框架中打开并每 10 秒刷新一次。没关系。但是,如果我通过单击第 2 组中的“成员”按钮关闭框架并打开一个新框架,则网格会在刷新网格的同时循环通过第 1 组和第 2 组。
我认为,问题在于由函数创建的计时器,必须在框架关闭之前将setInterval()
其清除。clearInterval(id)
该setInterval()
函数有一个返回值,但我不知道如何将它处理到clearInterval(id)
ATK4 框架中的函数?