2

我成功实现了 Shiny 的绑定能力,但是该函数是在 ui.R 中定义的,并且从 server.R 对这个新输入的任何调用都会导致函数未找到错误。

我正在传递session给 server.R (不确定这是否会有所不同),并且我还创建了一个 global.R ,其中仅包含该函数(不确定我是否需要除此之外的任何内容,因为这甚至不允许我调用ui.R 中的函数)。

如何从 server.R 调用自定义闪亮输入函数(特别是在 a 中renderUI)?

此处的示例代码:(sortList从 ui.R 但不是 server.R 的调用工作正常) https://gist.github.com/jpd527/9687359

4

1 回答 1

2

这是一个修补的要点:https ://gist.github.com/trestletech/9691459

这里有两个主要变化

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

有几点需要注意:

  • 由于您现在sortListInputs每次动态创建时都在进行初始化,因此您需要确保该初始化代码是幂等的——即,当您运行该代码时,您不会破坏现有的代码。
  • 我注意到您正在加载自己版本的 jQuery 和其他一些 jQuery 库。请注意这一点,因为 Shiny 也有它依赖的 jQuery 版本。您需要确保没有任何冲突。
于 2014-03-21T17:49:03.340 回答