我成功实现了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
这里有两个主要的变化:
- 我将
sortListInput
函数移动到global.R
。你提到你已经尝试过了,但是它很好地将函数暴露给server
和UI
。 - 下一个问题是,您只在页面创建时初始化
sortListInput
。您在<head>
中有$( ".sortableList" ).sortable(); $( ".sortableList" ).disableSelection();
的单例<script>
,但这只会在页面创建时运行一次。因此,以后创建的动态创建的sortableLists
永远不会被初始化。所以我在你的sortListInput
中添加了一个<script>
块,它将在每次生成新代码时运行该代码。我不知道现在有更干净的方法来做到这一点,但也许有一个/将存在…
需要注意的几点:
- 因为你现在初始化所有的
sortListInputs
每次得到动态创建,你需要确保初始化代码是幂等的-即,你不会破坏现有的代码,当你运行该代码。 - 我注意到你正在加载自己的jQuery版本和其他一些jQuery库。要注意这一点,因为Shiny也有一个依赖的jQuery版本。您需要确保没有任何冲突。