交互式创建一个弹出对话框 [英] Create a popup dialog box interactive
问题描述
我想知道是否有可能通过使用Shiny(和ShinyBS)创建一个交互式弹出对话框.
I was wondering if it is possible to create a popup dialog box interactive by using shiny (and shinyBS).
例如,我有一个字符串,我想更改它,然后在出现对话框之前,询问我是否真的要更改它.如果我说是",它会这样做,否则会放弃更改.这是我的尝试,但发现了两个问题:1.如果单击是"或否",则没有任何变化2.您始终需要关闭底部关闭"框.
For example, I have a string and I want to change it and before doing a dialog box shows up asking if I really want to change it. In case I say "yes", it does it otherwise it discards the change. Here's my try but I found two issues: 1. if you click "yes" or "no", nothing changes 2. you always need to close the box by the bottom "close".
rm(list = ls())
library(shiny)
library(shinyBS)
name <- "myname"
ui =fluidPage(
textOutput("curName"),
br(),
textInput("newName", "Name of variable:", name),
br(),
actionButton("BUTnew", "Change"),
bsModal("modalnew", "Change name", "BUTnew", size = "small",
textOutput("textnew"),
actionButton("BUTyes", "Yes"),
actionButton("BUTno", "No")
)
)
server = function(input, output, session) {
output$curName <- renderText({paste0("Current name: ", name)})
observeEvent(input$BUTnew, {
output$textnew <- renderText({paste0("Do you want to change the name?")})
})
observeEvent(input$BUTyes, {
name <- input$newName
})
}
runApp(list(ui = ui, server = server))
欢迎其他建议!
推荐答案
这是一个命题,我主要更改了server.R
:
Here's a proposition, I mainly changed the server.R
:
library(shiny)
library(shinyBS)
ui =fluidPage(
textOutput("curName"),
br(),
textInput("newName", "Name of variable:", "myname"),
br(),
actionButton("BUTnew", "Change"),
bsModal("modalnew", "Change name", "BUTnew", size = "small",
HTML("Do you want to change the name?"),
actionButton("BUTyes", "Yes"),
actionButton("BUTno", "No")
)
)
server = function(input, output, session) {
values <- reactiveValues()
values$name <- "myname";
output$curName <- renderText({
paste0("Current name: ", values$name)
})
observeEvent(input$BUTyes, {
toggleModal(session, "modalnew", toggle = "close")
values$name <- input$newName
})
observeEvent(input$BUTno, {
toggleModal(session, "modalnew", toggle = "close")
updateTextInput(session, "newName", value=values$name)
})
}
runApp(list(ui = ui, server = server))
几点:
我创建了一个reactiveValues
来保存该人当前拥有的名字.这很有用,因为您可以在此人单击模式按钮时更新或不更新此值.您可以使用values$name
访问该名称.
I created a reactiveValues
to hold the name that the person currently has. This is useful because you can then update or not update this value when the person clicks on the modal button. You can access the name using values$name
.
一旦用户单击是"或否",您就可以使用toggleModal
关闭模态
You can use toggleModal
to close the modal once the user has clicked on yes or no
这篇关于交互式创建一个弹出对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!