【发布时间】:2023-04-09 03:02:01
【问题描述】:
如果我的闪亮应用中有多个动态生成的动作按钮,有没有办法知道点击了哪个动作按钮并使用点击的按钮的 ID 执行一些计算?
【问题讨论】:
如果我的闪亮应用中有多个动态生成的动作按钮,有没有办法知道点击了哪个动作按钮并使用点击的按钮的 ID 执行一些计算?
【问题讨论】:
我遇到了类似的问题,尽管在我的情况下按钮不是动态生成的。从问题中不清楚是否强调“动态生成”方面。如果是这样,我的回答对您没有多大帮助...
为了简化我的答案,我将问题简化为以下内容:
actionButtons(id="increase" 和 id="decrease"),我有一个整数变量(var)和文本输出(id="actual_value")来显示实际值。其中一个按钮应该增加一个值,另一个应该减少它,显然输出应该显示更新后的值。解决办法是:
shinyServer(function(input, output, session) {
increase <- reactive({
if( input$increase == 0 ) return( )
var <- var + 1
})
decrease <- reactive({
if( input$decrease == 0 ) return( )
var <- var - 1
})
actual.value <- reactive({
increase()
decrease()
var
})
output$actual_value <- renderText({
paste("Actual value is: ", actual.value() )
})
})
所以解释是有两个反应输入(即按钮)和两个相应的反应表达式(increase 和decrease)。第三个反应式表达式 (actual.value) 取决于前两个并返回 var 的实际值。无功输出取决于此。
因此,您为两个按钮(increase 和 decrease)创建了两个独立的反应式表达式,然后在第三个按钮(actual.value)中复用它们。
这可行,但是我不知道这是否是解决此类问题的最佳方法。
【讨论】: