Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shinyjs:[add | remove]类在模块中不起作用_R_Shiny_Shinyjs - Fatal编程技术网

Shinyjs:[add | remove]类在模块中不起作用

Shinyjs:[add | remove]类在模块中不起作用,r,shiny,shinyjs,R,Shiny,Shinyjs,背景 在我的模块中,我运行了一个长时间的计算。我想通过将光标更改为旋转圆来向用户提供一些视觉反馈。为此,我创建了一个css类。wait,并希望在主体上使用shinyjs::addClass来显示新光标。但是,在一个模块中,这不起作用,而在主应用程序中起作用。如何将所需的行为输入我的模块 代码 library(shiny) library(shinyjs) testUI <- function(id) { ns <- NS(id) tagList(useShinyjs()

背景

在我的
模块中,我运行了一个长时间的计算。我想通过将光标更改为旋转圆来向用户提供一些视觉反馈。为此,我创建了一个
css
。wait
,并希望在
主体上使用
shinyjs::addClass
来显示新光标。但是,在一个模块中,这不起作用,而在主应用程序中起作用。如何将所需的行为输入我的模块

代码

library(shiny)
library(shinyjs)

testUI <- function(id) {
   ns <- NS(id)
   tagList(useShinyjs(),
           inlineCSS('.wait {cursor: wait;};'),
           actionButton(ns("wait"), "wait"),
           actionButton(ns("stop"), "stop"))
}

test <- function(input, output, session) {
   observeEvent(input$wait,  addClass(selector = "body", class = "wait"))
   observeEvent(input$stop,  removeClass(selector = "body", class = "wait"))
}

ui <- fluidPage(
   useShinyjs(),
   testUI("test"),
   div("Test to show that 'wait' class works", class = "wait"),
   actionButton("wait.main", "wait"),
   actionButton("stop.main", "stop")
) 
server <- function(input, output, session) {
    callModule(test, "test")
    observeEvent(input$wait.main,  addClass(selector = "body", class = "wait"))
    observeEvent(input$stop.main,  removeClass(selector = "body", class = "wait"))
}

shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(shinyjs)

testUI我想这是一个范围问题。最简单的方法是使用
shinyjs::runjs
直接运行相应的JavaScript代码。在模块中,使用

observeEvent(input$wait,  runjs(code = '$("body").toggleClass("wait");'))
observeEvent(input$stop,  runjs(code = '$("body").toggleClass("wait");'))
此代码的作用与切换类(class=“wait”,selector=“body”)
完全相同

此答案可能有助于您以“闪亮的方式”进行操作: