【发布时间】:2023-03-26 19:51:01
【问题描述】:
我有一个使用 Ace 编辑器的 Shiny 应用程序。现在我想拥有它,以便当第一个用户使用此编辑器时,其他用户无法编辑文档,而只能查看文档。
如何实现?
代码是:
library(shiny)
library(shinyAce)
library(stringi)
ui <- fluidPage(
br(),
uiOutput("aceEditor1"),
downloadButton('save1', 'Save editor content')
)
server <- function(input, output, session)
{
output$aceEditor1 <- renderUI(
{
aceEditor(outputId = "ace1",
value = paste(stri_rand_lipsum(3), collapse="\n\n"),
mode = "r",
height = "500px",
fontSize = 17,
theme = "chrome",
wordWrap = TRUE)
})
output$save1 <- downloadHandler (
filename = function()
{
"result.txt"
},
content = function(file)
{
write.table(x = input$ace1, file = file, sep = "", row.names = FALSE, col.names = FALSE, quote = FALSE)
}
)
}
shinyApp(ui = ui, server = server)
【问题讨论】:
-
也许您可以定义一个全局变量(在
server函数之外),当有人进入/退出编辑器时更改 T/F(我不熟悉该小部件的细节)。然后在进入编辑器之前检查变量,如果其他人没有退出,则不允许。见rstudio.github.io/shiny/tutorial/#scoping。 -
Ace 编辑器的使用是您可以在线编辑的一个示例。但重要的是,当有人在编辑器中编辑文档时,其他用户不能干预并同时开始编辑该文档。其实代码不是一个很好的例子,要编辑的文档应该是存储在服务器某处的文档。
标签: r shiny privileges ace-editor