r语言 - 闪亮观察事件重复输出



我正在尝试将完整的日历htmlwidget构建到我闪亮的应用程序中。但是,当我尝试过滤掉底层数据帧(带有事件(并使用 observeEvent 再次输出日历时,日历会在主面板中堆叠 - 示例。如何使旧的过滤器版本消失并只保留当前版本?

服务器。R

library(fullcalendar)
library(shiny)

server <- function(input, output) {
  df<-data.frame(title = paste("Event", 1:3),
                 start = c("2017-03-01", "2017-11-15", "2017-11-16"),
                 end = c("2017-03-02", "2017-11-17", "2017-11-16"))
  observeEvent(input$typeInput, {
    df$title<-as.character(df$title)
    df<-df[df$title %in% input$typeInput,]
    f<- fullcalendar(data=df)
    output$calendar<-htmlwidgets::shinyRenderWidget(f, fullcalendarOutput,
    env=parent.frame(), quoted = TRUE)
    #output$calendar<-fullcalendar::renderFullcalendar(f)
  })
}

用户界面。R

library(shiny)
library(fullcalendar)
ui <- fluidPage(
  shinyjs::useShinyjs(),
   titlePanel("Test"),
   sidebarLayout(
      sidebarPanel(
        radioButtons("typeInput", "Product type",
                     choices = c("Event 3", "Event 2"),
                     selected = "Event 3")),
      mainPanel(
        fullcalendarOutput("calendar")
      )
   )
)

编辑:我调查了更多(闪亮形式的网络检查(,似乎随着每个按钮的变化,都会创建一个新的 html 小部件子项(屏幕截图(。我认为每次观察到的变化都会重新创建小部件(因为重新运行观察事件(,但事实并非如此。这是默认行为还是也可能与某些 .js/.css 文件有关?我可以删除小部件并在观察事件部分重新创建它吗?

你想使用reactive而不是observeEvent。此外,您不需要或不想将输出变量的断言放在观察函数或反应函数中。

library(fullcalendar) 
library(shiny) 
server <- function(input, output) { 
df <- reactive({
  data.frame(title = paste("Event", 1:3), start = c("2017-03-01", "2017-11-15", "2017-11-16"), end = c("2017-03-02", "2017-11-17", "2017-11-16"))
}) 
f <- reactive({
  df <- df()
  df$title<-as.character(df$title) 
  df<-df[df$title %in% input$typeInput,] 
  fullcalendar(data=df)
})
 output$calendar<-htmlwidgets::shinyRenderWidget(f(), fullcalendarOutput, env=parent.frame(), quoted = TRUE) 
output$calendar<-fullcalendar::renderFullcalendar(f()) 
 }

相关内容

  • 没有找到相关文章

最新更新