如何从atk4中的一个按钮执行多个js操作

时间:2012-05-18 09:51:16

标签: atk4

- 编辑:现在已经解决了。

我想要一个按钮来执行多个js命令,例如

$nextButton = $form->addButton('Next');

要做:

$button_repopulate_address->js(true)->show()
$street->js(true)->closest('fieldset')->show()

何时:

$nextButton->isClicked()

示例代码here建议您将命令嵌套在js调用的第二个参数中,如下所示:

$g->addButton('Show all buttons')->js('click',$b1->js(null,$b2->js(null,$b3->js()->show())->show())->show());

我认为这非常难看,并且会创建超过2个命令很难遵循的代码。

我查看了源代码并找到了_prepend命令,我用这个命令解决了我的问题:

if($nextButton->isClicked()){
      $form->js()->_prepend($street->js(true)->closest('fieldset')->show())
                 ->_prepend($button_repopulate_address->js(true)->show())
              ->execute();
}
编辑:我只是查看了js()的源代码,看起来你可以将一个数组传递给js,它为数组中的每个项调用_prepend方法 - 很好!:

$form->js(null, array(
     $street->js(true)->closest('fieldset')->show(),
     $button_repopulate_address->js(true)->show()
));

- 已解决(但我链接到的example可能会使用这个更好的功能进行更新)

1 个答案:

答案 0 :(得分:2)

这里解释:

http://agiletoolkit.org/learn/understand/chains/multi

示例将很快修订,我们正在开发一个新的示例网站。