gpt4 book ai didi

r - 寻找结合 selectize 和 textInput 的快捷方式

转载 作者:行者123 更新时间:2023-12-05 00:13:02 25 4
gpt4 key购买 nike

我正在尝试为数据库(创建、读取、更新和删除)构建一个有点复杂的 CRUD 接口(interface)(可能 Shiny 不是最好的工具,但我想尝试一下,因为我不熟悉 js)。我已经找到了一些很好的例子,特别是来自 Barbara 的例子。 .现在我正在寻找一个捷径来组合 selectizeInputtextInput (也许作为 selectize 的一个选项?!),因为否则如果我必须像下面的示例所示那样做,我的代码就会变得很长。这个例子将展示我想要得到的东西。 (This 不是我要找的。)

这是一个非常简短的可重现示例:

library(shiny)
startData <- c("Berlin", "London", "Paris")

ui <- fluidPage(
selectizeInput("town", "Town", choices = c(startData, "new town")),
uiOutput("newTown")
)

server <- function(input, output, session) {

rV <- reactiveValues(towns = startData)

output$newTown <- renderUI({
if (input$town == "new town") {
tagList(
textInput("text", "New Town"),
actionButton("entry", "save town")
)
}
})
# update selectizeInput when actionButton is clicked
observeEvent(input$entry, {
rV$towns <- c(rV$towns, input$text)
updateSelectizeInput(
session, "town", "Town",
choices = c(rV$towns, "new town"),
selected = input$text
)
})
}

# Run the application
shinyApp(ui = ui, server = server)

对于一个更复杂的示例,我尝试实现一个简单的数据表进行编辑,您可以在我的 github 上找到它。帐户。希望有更短的方法这样做......

最佳答案

好吧,一个选择 输入已经是 textInput 的组合和 selectInput .因此,所需的功能已经包含在 selectize 包中。您可以将选项参数传递给 selectizeInput , 会直接翻译成 JavaScript 包。 See here选项列表。

其中之一是创建 选项指定是否以及何时可以通过键入与任何给定选项不匹配的内容来创建选项。

以下示例中的整个服务器代码可以省略以显示这一点,但我在其中留下了一些评估,以阐明一旦由框架创建后如何实际扩大选择集。

library(shiny)
startData <- c("Berlin", "London", "Paris")

ui <- fluidPage(
selectizeInput("town", "Town", choices = startData, options=list(create=TRUE))
)

server <- function(input, output, session) {

rV <- reactiveValues(towns = startData)

observeEvent(input$town, {
# nchar check, because emptying the text field results in "" choice.
if (nchar(input$town) && !(input$town %in% rV$towns)) {
rV$towns <- c(rV$towns, input$town)
}

print(rV$towns)
})
}

shinyApp(ui = ui, server = server)

关于r - 寻找结合 selectize 和 textInput 的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com