R闪亮插入fluidRow
我希望能够删除一个UI元素,它是fluidRow中包含的textInput,并将该元素(fluidRow和textInput)重新插入到UI中。然而,到目前为止,我没有取得任何成功 removeUI按钮删除了所有FluidRow,包括找到按钮的FluidRow。如果我试着把它们放在一个单独的HTML分区中,似乎没有什么不同。或者,如果有效,则textInput不再位于偏移流体行中。这是我的第一个闪亮的问题,所以请温柔一点,我可能犯了一些明显的错误R闪亮插入fluidRow,r,shiny,R,Shiny,我希望能够删除一个UI元素,它是fluidRow中包含的textInput,并将该元素(fluidRow和textInput)重新插入到UI中。然而,到目前为止,我没有取得任何成功 removeUI按钮删除了所有FluidRow,包括找到按钮的FluidRow。如果我试着把它们放在一个单独的HTML分区中,似乎没有什么不同。或者,如果有效,则textInput不再位于偏移流体行中。这是我的第一个闪亮的问题,所以请温柔一点,我可能犯了一些明显的错误 # Define UI ui <-
# Define UI
ui <- fluidPage(
fluidRow(column(2,actionButton("rmv", "Remove UI"))),
fluidRow(column(2,actionButton("add", "Add UI"))),
tags$div(id='aTextBox', fluidRow(column(2,offset=6,
textInput("txt", "This is no longer useful"))
)
)
)
# Server logic
server <- function(input, output) {
observeEvent(input$rmv, {
removeUI(
selector = "div:has(> #aTextBox)"
)
})
observeEvent(input$add, {
insertUI(
selector = "#add",
where = "afterEnd",
ui = tags$div(id='aTextBox', fluidRow(column(2,offset=6,
textInput("txt", "This is no longer useful"))
)
)
)
})
}
# Complete app with UI and server components
shinyApp(ui, server)
#定义用户界面
ui将两处的div替换为:
tags$div(fluidRow(id='aTextBox', column(2,offset=6,
textInput("txt", "This is no longer useful"))
编辑:
正如Barbaradiv(id=“placeholder”)
所指出的,可以使用此选项,以使文本框不会与actionButton()
放在同一个div中,将两个位置的div替换为:
tags$div(fluidRow(id='aTextBox', column(2,offset=6,
textInput("txt", "This is no longer useful"))
编辑:
正如Barbaradiv(id=“placeholder”)
所指出的,可以使用此选项,以使文本框不会与actionButton()
放在同一个div中。存在的主要问题是removeUI太宽。在这种情况下,您需要直接执行removeUI(“#aTextBox”)
然而,这段代码存在一些问题,即使它工作正常。这主要是因为它允许用户多次点击“添加”,但这将始终添加具有相同id的完全相同的元素,这是无效的HTML。大多数浏览器一开始不会抱怨它,但它会回来咬你。要解决这个问题,您可以在用户每次单击“添加”时更改ID,这样就不存在复制的可能性。或者,您可以跟踪该元素是否已插入(但尚未删除)。您可以使用一个简单的无功值来实现这一点。这似乎就是您所追求的行为,因此我在下面制作了一个模型(此代码运行良好,但可能会受益于一些重构和变量重命名),并添加了一些提示(当您不应该单击“添加”或“删除”时会弹出通知):
dynamicUI主要问题是removeUI太宽。在这种情况下,您需要直接执行removeUI(“#aTextBox”)
然而,这段代码存在一些问题,即使它工作正常。这主要是因为它允许用户多次点击“添加”,但这将始终添加具有相同id的完全相同的元素,这是无效的HTML。大多数浏览器一开始不会抱怨它,但它会回来咬你。要解决这个问题,您可以在用户每次单击“添加”时更改ID,这样就不存在复制的可能性。或者,您可以跟踪该元素是否已插入(但尚未删除)。您可以使用一个简单的无功值来实现这一点。这似乎就是您所追求的行为,因此我在下面制作了一个模型(此代码运行良好,但可能会受益于一些重构和变量重命名),并添加了一些提示(当您不应该单击“添加”或“删除”时会弹出通知):
dynamicu