根据输入值的变化更新闪亮UI的内容

时间:2015-12-06 10:27:56

标签: javascript r shiny shiny-server

我在ui.R中有以下内容

shinyUI(fluidPage(
  uiOutput("test"),
    mainPanel(
      tabsetPanel(
  tabPanel("Test",conditionalPanel("input.show==1",includeHTML("index.html")))
  )
    )

))

以及server.R中的以下内容     shinyServer(函数(输入,输出){

  output$test <- renderUI({
      tmp <- readLines("www/termite.css")
      ifelse(grepl("#ccc",tmp[2]),tmp[2] <- gsub("#ccc","#FFF",tmp[2]),tmp[2] <- gsub("#FFF","#ccc",tmp[2]))
      write(tmp,"www/termite.css",sep = "\n")
      tmp <- readLines("index.html")
      tmp[8] <- gsub("This is a page","This is my page!",tmp[8])
      write(tmp,"index.html",sep = "\n")
      checkboxInput("show","change bg color",value=0)
  })

})

在index.html中

<!DOCTYPE html>
<html>
<head>
  <title>Hi there</title>
  <link href="termite.css" rel="stylesheet" type="text/css"/>
</head>
<body>
  This is a page
  a simple page
</body>
</html>

在www / termite.css

body {
 background-color: #FFF;
 cursor: default;
}

现在服务器程序将在程序执行后更新termite.css文件。并且仅当选中复选框时#index; index.html&#34;应该加载到ui。但现在ui加载现有文件,它不会再次更新。我试过回复&#39; includehtml&#39;来自服务器的功能,但它没有加载所有外部文件。它只在从ui调用时才加载外部文件。这里最初的颜色代码是#FFF,所以当我选择复选框时,它应该加载背景颜色为#ccc的页面,文本应该改为&#34;这是我的页面!&#34; 提前谢谢。

0 个答案:

没有答案