Das Ziel ist ein glänzendes Modul ui1.R
zu haben, das den Submit Button nur aktiviert, wenn etwas in lsuId
eingegeben wurde. Der aktuelle Code ruft keine Fehler ab, scheint aber niemals toggleState
aufzurufen.Wie mache ich ein glänzendes Modul, um eine Schaltfläche bedingt anzuzeigen?
ui.R
library(shiny)
library(shinyjs)
htmlOutput("page")
server.R
rm(list = ls())
library(shiny)
library(dplyr)
library(shinyjs)
Logged <- FALSE
shinyServer(function(input, output) {
observeEvent(input$"ui1Output-confirm", {
Logged <<- T
})
observe({
input$"ui1Output-confirm"
if (Logged == FALSE) {
output$page <- renderUI({
ui1Output('ui1Output')
})
output$lsuId <- renderText({ input$lsuId })
}
if (Logged == TRUE)
{
output$page <- renderUI({ ui2 })
}
})
callModule(ui1,'ui1')
})
ui1.R
library(shinyjs)
ui1Output <- function(id, label = "ui1") {
ns <- NS(id)
shinyUI(fluidPage(
useShinyjs(),
titlePanel("Form"),
div(textInput(ns("lsuId"), "This has to be filled", ""),
actionButton(ns("confirm"), "Submit", class = "btn-primary")
)
))
}
ui1 <- function(input, output, session) {
shinyjs::toggleState(id = "confirm", condition = F)
observeEvent(input$lsuId!="", {
shinyjs::toggleState(id = "confirm", condition = T)
})
}
ui2.R
ui2<- shinyUI(fluidPage(
div("well done!")
))
global.R
source('ui1.R') #login page
source('ui2.R')
Haben Sie es selbst getestet und es funktioniert? – Dambo