如何通过单击按钮关闭 R Shiny 中的 f7Popup?

问题描述 投票:0回答:1

我有一个弹出窗口,在应用程序首次运行时打开。我不喜欢弹出窗口一角的小 x,而是希望在弹出窗口底部有一个更大的“继续”按钮。但是,我无法在单击按钮后关闭窗口。请参阅下面的代码:

library(shiny)
library(shinyWidgets)
library(shinyMobile)
library(tidyverse)
library(shinyalert)
library(googleLanguageR)
library(mongolite)

ui <- f7Page(
  title = "Home Page",
  allowPWA = TRUE,
  options = list(
    theme = 'md',
    dark = FALSE,
    filled = TRUE,
    pullToRefresh = FALSE,
    color = '#005C5C'
  ),
  f7TabLayout(
    navbar = '',
    f7Tabs(
      animated = TRUE,
      id = 'main_tab_layout',
      f7Tab(
        tabName = 'Main',
        title = 'Main Screen'
      )
    )
  ),
  uiOutput("popup_ui")
)

server <- function(input, output, session) {
  
  popup_visible <- reactiveVal(TRUE)
  
  output$popup_ui <- renderUI({
    if (popup_visible()) {
      f7Popup(
        id = "my_popup",
        title = "Popup Home",
        f7Block(
          h1("Popup Title"),
          p("Welcome to the popup!"),
          actionBttn("close_popup", "Continue")
        )
      )
    }
  })
  
  observeEvent(input$close_popup, {
    popup_visible(FALSE)
    print("CLOSED")
  })
}

shinyApp(ui = ui, server = server)

ChatGPT 提出了这个解决方案,并且正在努力提供替代方案。正在打印“CLOSED”,因此按钮单击正在注册,但弹出窗口没有关闭,也没有发生其他情况。

r shiny shiny-reactivity
1个回答
0
投票

您可以将类

link popup-close
添加到按钮上,然后它就具有关闭弹出窗口的功能。下面我还将结束语
x
放在角落里。

enter image description here

library(shiny)
library(shinyWidgets)
library(shinyMobile)

ui <- f7Page(
  title = "Home Page",
  allowPWA = TRUE,
  options = list(
    theme = 'md',
    dark = FALSE,
    filled = TRUE,
    pullToRefresh = FALSE,
    color = '#005C5C'
  ),
  f7TabLayout(
    navbar = '',
    f7Tabs(
      animated = TRUE,
      id = 'main_tab_layout',
      f7Tab(
        tabName = 'Main',
        title = 'Main Screen'
      )
    )
  ),
  uiOutput("popup_ui")
)

server <- function(input, output, session) {
  
  popup_visible <- reactiveVal(TRUE)
  
  output$popup_ui <- renderUI({
    if (popup_visible()) {
      f7Popup(
        id = "my_popup",
        title = "Popup Home",
        closeButton = FALSE,
        f7Block(
          h1("Popup Title"),
          p("Welcome to the popup!"),
          actionBttn("close_popup", "Continue", class = "link popup-close")
        )
      )
    }
  })
  
  observeEvent(input$close_popup, {
    popup_visible(FALSE)
  })
}

shinyApp(ui = ui, server = server)
© www.soinside.com 2019 - 2024. All rights reserved.