将响应数据作为updateSelectizeInput

时间:2018-05-17 14:18:59

标签: r shiny shinyjs

我正在尝试将响应数据传递给 updateSelectizeInput ,但却出现以下错误:

.getReactiveEnvironment()$ currentContext()中的错误:   没有活动的反应上下文,不允许操作。 (你试图做一些只能在反应性表达或观察者内部完成的事情。)

我的代码如下:

ui.R

 library(shiny)


  ui_panel <- 
  tabPanel("Text Input Test",
          sidebarLayout(
           sidebarPanel( 


           selectizeInput('Organisations', label = "Organisation Search", 
   choices = NULL, options = list(
             placeholder = 'Type the organisation name', maxOptions = 10, 
   maxItems = 1, searchConjunction = 'and')),
           tags$style(type="text/css",
                      ".selectize-input::after{visibility:hidden;};"
                      ),


           br(),
           selectInput(
             inputId="selectData",
             label=" ",
             choices=c("Universities", "Hospitals")
           ),

           br()
         ),
         mainPanel(
           tabsetPanel(

             tabPanel("output of Organisation search 
 details",htmlOutput("orgsearchdetails"))

           )
         )
       ))


ui <- shinyUI(navbarPage(" ",ui_panel))

server.R

   library(shiny)


  shinyServer(
   function(input, output, session) {



    orgdata <- reactive({if(input$selectData=='Universities'){
    orgdata <- read.csv("universities.csv")
   }else if (input$selectData=='Hospitals'){ 
    orgdata <- read.csv("hospitals.csv")
    }
    orgdata
   })




    updateSelectizeInput(session, 'Organisations', choices = 
   as.character(unique(
     orgdata()$name)), server = TRUE)




  output$orgsearchdetails <-renderUI({ 


    })


  session$onSessionEnded(function() { dbDisconnect(con) })
  })

有没有办法可以将selectInput的反应性传递给updateSelectizeInput?

我选择updateSelectizeInput而不是反应性selectInput,以避免在启动应用程序时填充字段。

非常欢迎任何帮助或见解。提前谢谢你。

1 个答案:

答案 0 :(得分:1)

我不是一个闪亮的专家,但从我一直在建设的仪表板,这就是我要做的。我会创建一个名为reactiveValues的{​​{1}}变量。然后在我的selectedData中,我会提取csv并更新observeEvent。我选择在我的应用程序中使用selectedData的原因是它们可以是有状态的,而不是总是对某些输入作出反应,我可以在需要相同信息的应用程序的其他区域中调用它们。至于使用reactiveValues,它很简单,因为你可以将observeEvent包裹在观察者中。

updateSelectizeInput