r - 如果包含在包中,Shinyjs 切换不起作用
问题描述
我shinyjs::toggle
在一个 R 脚本中使用过,我在同一个文件中有ui
和函数。这种方式效果很好,但是一旦我在 2 个单独的文件(a和 a )中server
使用完全相同的代码作为包的一部分,它就不再工作了。没有错误消息,该功能根本不会显示和隐藏我使用它的元素。ui.R
server.R
我用下面的最小示例进行了尝试,结果相同。作为一个独立的 R 脚本,它可以工作,一旦我在一个包中使用相同的功能,它就不会。
library(shiny)
library(shinydashboard)
library(shinyjs)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
useShinyjs(),
actionButton("button", "Click me"),
div(id = "hello", "Hello!")
)
)
server <- function(input, output) {
observeEvent(input$button, {
toggle("hello")
})
}
shinyApp(ui, server)
在一个包中:
#' Shiny App UI
#'
#' @import shiny
#' @import shinydashboard
#' @import shinyjs
#'
#'
uitest <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
useShinyjs(),
actionButton("button", "Click me"),
div(id = "hello", "Hello!")
)
)
#' Shiny app server function
#'
#' @param input provided by shiny
#' @param output provided by shiny
#'
servertest <- function(input, output) {
observeEvent(input$button, {
toggle("hello")
})
}
任何人都可以在这里帮助我吗?可能会出什么问题?
解决方案
加载包时,UI 已经预先构建,并且不再触发脚本useShinyjs()
中包含的功能。ui.R
在我的包中,我创建了一个 launchApp 函数,它可以启动我的应用程序并useShinyjs()
在启动应用程序之前调用它。所以我有 3 个单独的 R 文件ui.R
:server.R
和launchApp.R
.
launchApp <- function() {
shinyjs::useShinyjs()
shinyApp(ui, server)
}
推荐阅读
- php - How to create a Woocommerce Product Filter with AJAX?
- php - Laravel WHERE 和 CLAUSE 无法正常工作
- silverlight - Guide to migrate Silverlight application
- python - File content not reading without seek in python
- laravel - Laravel Sanctum with SPA: Best practice for setting the CSRF cookie
- node.js - npm run build in php Laravel 挂起或退出
- sql - 加入这两个表以获得这个特定的输出?
- javascript - 过滤数组数组JS
- intellij-idea - JavaFX、JLink/JPackage 模块问题 - 添加库“启动层 java.lang.module.FindException 初始化期间发生错误”
- python - 使用 minidom 查找具有特定子节点的 XML 节点