shiny(およびshinyBS)を使用してインタラクティブなポップアップダイアログボックスを作成できるかどうか疑問に思いました。
たとえば、文字列があり、それを変更したいのですが、実行する前に、本当に変更するかどうかを尋ねるダイアログボックスが表示されます。「はい」と言った場合はそれを行い、そうでない場合は変更を破棄します。これが私の試みですが、2つの問題が見つかりました:1。「はい」または「いいえ」をクリックしても何も変わりません2.常に下部の「閉じる」でボックスを閉じる必要があります。
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
:を変更しました
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
。
toggleModal
ユーザーが[はい]または[いいえ]をクリックすると、モーダルを閉じるために使用できます
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加