从服务器调用"bind" -ed 输入。R



我成功实现了Shiny的绑定功能,但是该功能是在ui中定义的。R和任何来自服务器的调用。这个新输入的R会导致一个函数未找到错误。

我正在传递session到服务器。R(不确定这是否有区别)和我还创建了一个全局。(不确定我是否还需要其他东西,因为它甚至不允许我在ui.R中调用函数)

如何从服务器调用自定义闪亮输入函数。R(特别是在renderUI中)?

这里的示例代码:(调用sortList从ui工作良好。R而不是server.R)https://gist.github.com/jpd527/9687359

修补后的Gist: https://gist.github.com/trestletech/9691459

这里有两个主要的变化:

  1. 我将sortListInput函数移动到global.R。你提到你已经尝试过了,但是它很好地将函数暴露给serverUI
  2. 下一个问题是,您只在页面创建时初始化sortListInput。您在<head>中有$( ".sortableList" ).sortable(); $( ".sortableList" ).disableSelection();的单例<script>,但这只会在页面创建时运行一次。因此,以后创建的动态创建的sortableLists永远不会被初始化。所以我在你的sortListInput中添加了一个<script>块,它将在每次生成新代码时运行该代码。我不知道现在有更干净的方法来做到这一点,但也许有一个/将存在…

需要注意的几点:

  • 因为你现在初始化所有的sortListInputs每次得到动态创建,你需要确保初始化代码是幂等的-即,你不会破坏现有的代码,当你运行该代码。
  • 我注意到你正在加载自己的jQuery版本和其他一些jQuery库。要注意这一点,因为Shiny也有一个依赖的jQuery版本。您需要确保没有任何冲突。

最新更新