Shiny 在“观察”中创建的访问权限

Shiny 在“观察”中创建的访问权限,shiny,Shiny,我正在尝试访问在observe()中创建的reactive,并希望作为模块返回的对象。在下面的示例中,我正在从模块中查找mydf()和input$account\u页面。我知道我可以使用observeEvent(输入$go_to,{})来显示模态,但我还有其他用例可以这样做,我很难为此创建可复制的示例。因此,我为指定的问题创建了以下代码 library(shiny) library(shinyWidgets) choiceVec <- c("Beef/Pork" =

我正在尝试访问在
observe()
中创建的reactive,并希望作为模块返回的对象。在下面的示例中,我正在从模块中查找
mydf()
input$account\u页面
。我知道我可以使用
observeEvent(输入$go_to,{})
来显示模态,但我还有其他用例可以这样做,我很难为此创建可复制的示例。因此,我为指定的问题创建了以下代码

library(shiny)
library(shinyWidgets)

choiceVec <- c("Beef/Pork" = "beefpork","Sugar sweeteened bev." = "ssb",
               "Total fruit" = "total_fruit")

address_ui <- function(id) { }

address_server <- function(id, signin =  reactive(0)) {
  moduleServer(id, function(input, output, session) {
    
    observe({
      
      shiny::showModal(
        
        shiny::modalDialog(
          
          fluidRow(
            
            column(
              width = 6,
              
              shiny::textInput(
                "state",
                "State",
                width = "100%", 
                placeholder = "California"
              )),
            
            column(
              width = 6,
              
              shinyWidgets::pickerInput(
                "country",
                "Country",
                choices = choiceVec, 
                width = "100%", 
                # selected = "us",
                options = list(
                  title = "Select Country",
                  `live-search` = TRUE)
              )
            )),
          
          title = "Address",
          footer = tags$span(
            shiny::actionButton(
              'account_page',
              'Next'
            )
          ),
          size = 'm'
        )
      )
      
      
      mydf <- reactive({
        
        list(
             state = input$state,
             country = input$country
        )
        
      })
      
      
    })
    
    return( list(mydf(), reactive({ input$account_page }) ))
    
  })
  
  }
    
      

ui <- fluidPage(
  actionLink(
    "go_to",
    "Click Me",
    icon = icon("credit-card")
  ),
  address_ui("user_info")
)

server <- function(input, output, session) {
  
  user_details_return <- address_server(
    id = "user_info",
    signin = 1
  )
  
  
}

shinyApp(ui, server)
库(闪亮)
图书馆(shinyWidgets)
choiceVec被动对象
mydf()
仅在观察者内部可用。试试这个

library(shiny)
library(shinyWidgets)

choiceVec <- c("Beef/Pork" = "beefpork","Sugar sweeteened bev." = "ssb",
               "Total fruit" = "total_fruit")

address_ui <- function(id) {ns <- NS(id) 
                            verbatimTextOutput(ns("t1")) }

address_server <- function(id, signin =  reactive(0)) {
  moduleServer(id, function(input, output, session) {
    ns <- session$ns
    observe({
      
      shiny::showModal(
        
        shiny::modalDialog(
          
          fluidRow(
            
            column(
              width = 6,
              
              shiny::textInput(
                ns("state"),
                "State",
                width = "100%", 
                placeholder = "California"
              )),
            
            column(
              width = 6,
              
              shinyWidgets::pickerInput(
                ns("country"),
                "Country",
                choices = choiceVec, 
                width = "100%", 
                # selected = "us",
                options = list(
                  title = "Select Country",
                  `live-search` = TRUE)
              )
            )),
          
          title = "Address",
          footer = tags$span(
            shiny::actionButton(
              ns('account_page'),
              'Next'
            )
          ),
          size = 'm'
        )
      )
      
      
      mydf <- reactive({
        
        list(
          state = input$state,
          country = input$country
        )
        
      })
      
      observeEvent(input$account_page, {
        removeModal()
        return( list(mydf(), reactive({ input$account_page }) ))
      })
        
      output$t1 <- renderPrint({
        mydf()
      })
    })
    
  })
  
}



ui <- fluidPage(
  actionLink(
    "go_to",
    "Click Me",
    icon = icon("credit-card")
  ),
  address_ui("user_info") 
)

server <- function(input, output, session) {
  
  user_details_return <- address_server(
    id = "user_info",
    signin = 1
  )
  
}

shinyApp(ui, server)
      observe({return( list(mydf(), reactive({ input$account_page }) )) })

      observeEvent(input$account_page, {
        removeModal()
      })