【问题标题】:Agile toolkit : how to automatically reload grid敏捷工具包:如何​​自动重新加载网格
【发布时间】:2012-11-27 07:53:01
【问题描述】:

使用敏捷工具包生成网格,我正在尝试自动重新加载网格,但我不知道如何:/

我挖掘了js()函数,看到第一个参数是$when,但是,如何设置间隔?

点击按钮等事件重新加载是可以的,但我需要设置每 x 秒重新加载一次。

【问题讨论】:

    标签: php javascript jquery atk4


    【解决方案1】:

    好的,这里是完整的测试示例,你应该怎么做。

    首先我必须承认,ATK4 没有在 univ() 库中添加 setInterval 和 clearInterval 函数,但已经有了 setTimeout。我添加了 setInterval 和 clearInterval 并在 Github (https://github.com/atk4/atk4/pull/173) 中提出了拉取请求。我希望 Romans 会接受,但如果没有,那么您可以随时将这些函数添加到您自己的 JS 库中。

    代码如下:

    $g = $this->add('Grid');
    $this->js(true)->univ()->setInterval(
        $g->js()->reload()->_enclose()
    ,3000);
    

    或者你甚至可以像这样执行多个独立的函数:

    $this->js(true)->univ()->setInterval(
        $g->js(null,array(
            $g->js()->reload(),
            $g->js()->univ()->successMessage('Reloaded...')
        ))->_enclose()
    ,3000);
    

    这里的关键部分是 ->_enclose() 方法,它将您的 JS 链转换为匿名 JS 函数。

    【讨论】:

    • 是的,这需要稍加调整!正如你所说,这只是重新加载网格一次。但是,如果您将相同的代码(使用 $this 而不是 $g)放在一个单独的扩展网格的类中,它会永久重新加载网格!谢谢
    • 如果您将此 JS 添加为网格的一部分,则可能 setTimeout 就足够了,该网格在每次重新加载后重新加载并再次执行。我没有对此进行测试,但也许你可以将 $this->js(true)->univ()->setInterval(...) 更改为 $g->js(true)->univ()->设置间隔(...)。我的意思是 - 添加 JS 作为网格的一部分......现在没有时间测试它。
    • 如果此拉取请求 (github.com/atk4/atk4/pull/173) 将被接受,则 univ()->setInterval(不仅是 setTimeout)将可用,然后上面的代码示例应每 X 秒重新加载一次网格。我对此进行了测试,对我来说效果很好。
    • 太棒了!我会跟进请求状态:) 非常感谢您的帮助!
    • 现在已经合并到 Github 的 atk4 master 分支中了。
    【解决方案2】:

    Javascript 代码:

    setInterval("func()",1000);
    

    这将每 1000 毫秒调用一次 func() 函数

    【讨论】:

    • 您好,感谢您的回答。我知道 Jscript 和 JQuery 通常使用 setInterval 和 setTimeout 的方式,但我不知道如何将它与敏捷工具包框架集成;这是我的观点:)
    • 哈哈好吧,下次你的问题要准确一点
    最近更新 更多