发送闪亮的Javascript
我试图使用JS和服务器的输入来更改Shining上的输入(因此该值可以是有条件的)。 在本例中,我将该值固定为'NJ',但在末尾,我希望该值是动态的。我试图实现的最终结果是,当单击按钮时,让下拉菜单更改为一个值(此处为“NJ”)。下面是一个工作示例 我的JS知识非常简单,大部分来自阅读R文档,比如下面的文档发送闪亮的Javascript,javascript,r,shiny,Javascript,R,Shiny,我试图使用JS和服务器的输入来更改Shining上的输入(因此该值可以是有条件的)。 在本例中,我将该值固定为'NJ',但在末尾,我希望该值是动态的。我试图实现的最终结果是,当单击按钮时,让下拉菜单更改为一个值(此处为“NJ”)。下面是一个工作示例 我的JS知识非常简单,大部分来自阅读R文档,比如下面的文档 库(“闪亮”) ui如果您正在使用闪亮的输入组件,并且希望通过其他方式(例如,单击按钮)更新输入元素的值,则使用其中一个update-功能(在闪亮的软件包中提供)。但是,这些更新功能不太可
库(“闪亮”)
ui如果您正在使用闪亮的输入组件,并且希望通过其他方式(例如,单击按钮)更新输入元素的值,则使用其中一个update-
功能(在闪亮的软件包中提供)。但是,这些更新功能不太可能对非闪亮的小部件起作用(甚至不可用)
另一种方法是创建自定义输入绑定,在该绑定中,数据在客户端和客户端之间发送。这种方法最适合于定制输入组件或围绕现有组件库(非R/s包)创建包装器。(有关更多信息,请查阅以下RStudio指南,了解如何构建自定义输入对象以及如何创建自定义输入绑定。我不会在这里详细介绍输入绑定,因为这将是一个很长的答案)
可以使用会话$sendInputMessage()
将消息从服务器发送到客户端。在输入绑定(使用jQuery编写;vanilla JS不起作用)中,使用receiveInputMessage
方法检索和响应数据。使用您问题中提供的示例,我提供了一个演示如何更新自定义选择输入小部件以响应按钮单击
如果你有任何问题,请告诉我
库(闪亮)
ui因为您使用的是闪亮的输入组件,所以我建议您使用updateSelectInput
函数(在闪亮的pkg中提供)。通过JS设置输入值最适用于自定义输入组件(即非闪亮元素)。如果您使用的是自定义组件,则可以通过自定义输入绑定中的会话$sendInputMessage
(在R中)和receiveInputMessage
修改组件的状态。谢谢@dcruvolo,您能否详细介绍如何使用receiveInputMessage?这个例子只是使用闪亮的组件,但我的目标是解决bs4Dash组件的问题。我完全不知道如何添加交互的JS端,这让我非常清楚。由于这一点,我需要使用的版本现在可以使用了,我已经完成了学习JS实现的第一步!谢谢
library("shiny")
ui <- fluidPage(
tags$script("Shiny.addCustomMessageHandler('change_sel', function(x){
Shiny.setInputValue('state', x,{priority: 'event'});
});")
,
column(6,
selectInput("state", "Choose a state:",
c("NY", "NJ", "CT")
),
column(6,
actionButton("but1", "Change to NJ"
)
)))
server <- function(input, output, session) {
observeEvent(input$but1, {
session$sendCustomMessage("change_sel", "NJ")
})
observe(print(input$state))
}
shinyApp(ui, server)