R 获取闪亮事件的值
我想在javascript中访问R 获取闪亮事件的值,r,shiny,R,Shiny,我想在javascript中访问shinny.setInputValue()的值。在chrome控制台中,我尝试了$('too').length和document.querySelector('too').innerHTML,但它没有捕获闪亮的事件 注意:我不想要闪亮输出的值。我知道document.querySelector('#table')。innerHTML也返回 library(shiny) ui <- fluidPage( HTML('<script&
shinny.setInputValue()
的值。在chrome控制台中,我尝试了$('too').length
和document.querySelector('too').innerHTML
,但它没有捕获闪亮的事件
注意:我不想要闪亮输出的值。我知道document.querySelector('#table')。innerHTML
也返回
library(shiny)
ui <- fluidPage(
HTML('<script>
$( document ).on("shiny:sessioninitialized", function(event) {
Shiny.setInputValue("too", "noone");
});</script>'),
textOutput("table")
)
server <- function(input, output) {
output$table <- renderPrint(input$too)
}
shinyApp(ui,server)
库(闪亮)
ui我不确定我是否正确理解了这个问题,但无论如何
您已经在javascript中提供了shinny.setInputValue()
的值。那么,为什么不声明这样一个变量:
library(shiny)
ui <- fluidPage(
HTML('<script>
$(document).on("shiny:sessioninitialized", function(event) {
var inputValue = "noone"
console.log(inputValue)
Shiny.setInputValue("too", inputValue);
});</script>'),
textOutput("table")
)
server <- function(input, output) {
output$table <- renderPrint(input$too)
}
shinyApp(ui, server)
库(闪亮)
ui我认为您可以将其保存到全局变量中:
library(shiny)
js_set <- "$(document).on('shiny:sessioninitialized', function(event) {
too = Math.random();
Shiny.setInputValue('too', too);
})"
js_get <- "$(document).on('shiny:value', function(event) {
console.log(too);
})"
ui <- fluidPage(
tags$script("var too = 0;"),
tags$script(js_set),
tags$script(js_get),
textOutput("table")
)
server <- function(input, output) {
output$table <- renderPrint({
req(input$too)
input$too
})
}
shinyApp(ui,server)
库(闪亮)
js_set无论何时设置输入值,都可以使用此函数触发事件:
function setInputValue(name, value) {
Shiny.setInputValue(name, value);
$('body').trigger('myevent', [name, value]);
}
然后您可以收听此事件:
$('body').on('myevent', function(event, name, value) {
// do something with name and value
});
例如:
js <- "
function setInputValue(name, value) {
Shiny.setInputValue(name, value);
$('body').trigger('myevent', [name, value]);
}
$('body').on('myevent', function(event, name, value) {
console.log('name:', name);
console.log('value:', value);
});
$(document).on('shiny:sessioninitialized', function() {
setInputValue('too', 'hello');
});"
ui <- fluidPage(
tags$script(HTML(js)),
verbatimTextOutput("table")
)
server <- function(input, output) {
output$table <- renderPrint({
input$too
})
}
shinyApp(ui,server)
js很抱歉没有说清楚。这更多是为了学习。我有一个来自R的大JS包,它通过shinny.setInputValue()触发事件。我不想定制那个软件包。相反,我希望JS在触发shinny.setInputValue时监听。我也可以通过input$在R中完成,但我想在JS中完成。