Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发送闪亮的Javascript_Javascript_R_Shiny - Fatal编程技术网

发送闪亮的Javascript

发送闪亮的Javascript,javascript,r,shiny,Javascript,R,Shiny,我试图使用JS和服务器的输入来更改Shining上的输入(因此该值可以是有条件的)。 在本例中,我将该值固定为'NJ',但在末尾,我希望该值是动态的。我试图实现的最终结果是,当单击按钮时,让下拉菜单更改为一个值(此处为“NJ”)。下面是一个工作示例 我的JS知识非常简单,大部分来自阅读R文档,比如下面的文档 库(“闪亮”) ui如果您正在使用闪亮的输入组件,并且希望通过其他方式(例如,单击按钮)更新输入元素的值,则使用其中一个update-功能(在闪亮的软件包中提供)。但是,这些更新功能不太可

我试图使用JS和服务器的输入来更改Shining上的输入(因此该值可以是有条件的)。 在本例中,我将该值固定为'NJ',但在末尾,我希望该值是动态的。我试图实现的最终结果是,当单击按钮时,让下拉菜单更改为一个值(此处为“NJ”)。下面是一个工作示例

我的JS知识非常简单,大部分来自阅读R文档,比如下面的文档

库(“闪亮”)

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)