从server.R调用"绑定" -ed输入

时间:2014-03-20 22:38:14

标签: r shiny inputbinding

我成功实现了Shiny的绑定功能,但是该函数在ui.R中定义,并且来自server.R的任何调用都会导致函数找不到错误。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

这里有两个主要changes

  1. 我将sortListInput功能移至global.R。你提到你已经尝试过了,但它可以游戏地将功能公开给serverUI
  2. 下一个问题是您只是在创建页面时初始化sortListInput。您$( ".sortableList" ).sortable(); $( ".sortableList" ).disableSelection();中的单身<script>中有<head>,但只有在创建页面时才会运行一次。因此,以后创建的动态创建的sortableLists永远不会被初始化。所以我在<script>添加了sortListInput块,每次生成新代码时都会运行该代码。我现在还没有意识到更清洁的方法,但也许会存在/将会存在......
  3. 需要注意以下几点:

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