繁体   English   中英

r闪亮的观察功能可清除文本输入

[英]r shiny observe function clears text input

嗨,我正在尝试建立一个与API服务联系并验证用户凭据的登录页面。 如果凭据正确,则会出现一个新的用户界面,并进行绘制。 如果不正确,则在登录屏幕上会显示一条消息,提示“登录错误”。 当前,当我尝试在登录页面(ui1.r)中输入任何一个字段时,该字段会在大约一秒钟后刷新/擦除自身,从而阻止了我将用户输入传递给API。 我有以下文件

server.r:

rm(list = ls())
library(shiny)
library(dplyr)
library(shinyjs)
umls <- dbConnect(drv=RSQLite::SQLite(), 
                  dbname="/media/sf_umls-2018AA-full/2018AA-full/2018AA/META/umls_browser.sqlite3")
licenseCode <- "mylicense"



shinyServer(function(input, output) {

  source('ui1.R') #login page



  output$page <- renderUI({ ui1 })

  observe({
    z<-system(paste("perl", "/media/sf_umls-2018AA-full/2018AA-full/2018AA/META/umls_auth.pl",
                    input$user, input$password),intern=TRUE)
    if (grepl("false",z[22])) {
      renderText("incorrect login")
    }
    if (grepl("true",z[22])) 
    {
      output$page <- renderUI({ ui2 })
      output$table <- renderTable({mtcars()})
    }
  })

})

ui1.r

ui1 <- shinyUI(fluidPage(


      # Application title
      titlePanel("UMLS Constraint Browser"),

      # Sidebar with a slider input for number of bins 
      sidebarLayout(
        sidebarPanel(
          textInput("user", "User",""),
          textInput("password", "Password",""),
          actionButton("login", "Login")

        ),
        mainPanel(
          tableOutput("table")
        )
      )
    ))

似乎是什么问题?

我认为问题来自observe功能。 每次您写一封信时,它都会向您的凭证数据库发送一个请求。 您应该尝试使用ObserveEvent代替:

shinyServer(function(input, output) {

observeEvent(input$login, {
z<-system(paste("perl", "/media/sf_umls-2018AA-full/2018AA-full/2018AA/META/umls_auth.pl",
                input$user, input$password),intern=TRUE)
if (grepl("false",z[22])) {
  renderText("incorrect login")
}
if (grepl("true",z[22])) 
{
  output$page <- renderUI({ ui2 })
  output$table <- renderTable({mtcars()})
}  })

})

在此,仅当用户单击登录按钮时才发出请求。 告诉我它是否适合您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM