在 R Shiny 应用程序中访问 Javascript 变量
Access Javascript Variable in R Shiny Application
我想知道是否可以在我的 R 代码中使用 runjs()
中创建的变量。
例如,我能否在 runjs()
函数之外访问变量 today_var
以进行进一步分析。
if (interactive()) {
library(shiny)
shinyApp(
ui = fluidPage(
useShinyjs(),
actionButton("btn", "Click me")
),
server = function(input, output) {
observeEvent(input$btn, {
runjs("var today_var = new Date(); alert(today);")
#print(today_var)
})
}
)
}
提前致谢
有一个很棒的函数叫做 Shiny.onInputChange
它会做你想做的事
library(shiny)
library(shinyjs)
shinyApp(
ui = fluidPage(
useShinyjs(),
actionButton("btn", "Click me")
),
server = function(input, output) {
observeEvent(input$btn, {
runjs('var today_var = new Date(); alert(today_var);Shiny.onInputChange("today_var",today_var);')
print(input$today_var)
})
}
)
出于某种原因,上面的代码为我返回了 NULL
。
但是,按照本文中描述的过程行得通:Communicating with Shiny via JavaScript
这种方法基本上涉及首先从 javascript 代码中设置一个闪亮的输入变量,然后从闪亮的代码中响应地读取该输入值。
library(shiny)
library(shinyjs)
shinyApp(
ui = fluidPage(
useShinyjs(),
actionButton("btn", "Click me")
),
server = function(input, output) {
observeEvent(input$btn, {
runjs('var today_var_js = new Date(); alert(today_var_js);
//Shiny.onInputChange("today_var",today_var);
//set shiny Input value to read reactively from R
Shiny.setInputValue("today_var_shiny", today_var_js);
')
})
#use the shiny Input value
#https://shiny.rstudio.com/articles/communicating-with-js.html
observeEvent(input$today_var_shiny, { print(input$today_var_shiny) })
}
)
我想知道是否可以在我的 R 代码中使用 runjs()
中创建的变量。
例如,我能否在 runjs()
函数之外访问变量 today_var
以进行进一步分析。
if (interactive()) {
library(shiny)
shinyApp(
ui = fluidPage(
useShinyjs(),
actionButton("btn", "Click me")
),
server = function(input, output) {
observeEvent(input$btn, {
runjs("var today_var = new Date(); alert(today);")
#print(today_var)
})
}
)
}
提前致谢
有一个很棒的函数叫做 Shiny.onInputChange
它会做你想做的事
library(shiny)
library(shinyjs)
shinyApp(
ui = fluidPage(
useShinyjs(),
actionButton("btn", "Click me")
),
server = function(input, output) {
observeEvent(input$btn, {
runjs('var today_var = new Date(); alert(today_var);Shiny.onInputChange("today_var",today_var);')
print(input$today_var)
})
}
)
出于某种原因,上面的代码为我返回了 NULL
。
但是,按照本文中描述的过程行得通:Communicating with Shiny via JavaScript
这种方法基本上涉及首先从 javascript 代码中设置一个闪亮的输入变量,然后从闪亮的代码中响应地读取该输入值。
library(shiny)
library(shinyjs)
shinyApp(
ui = fluidPage(
useShinyjs(),
actionButton("btn", "Click me")
),
server = function(input, output) {
observeEvent(input$btn, {
runjs('var today_var_js = new Date(); alert(today_var_js);
//Shiny.onInputChange("today_var",today_var);
//set shiny Input value to read reactively from R
Shiny.setInputValue("today_var_shiny", today_var_js);
')
})
#use the shiny Input value
#https://shiny.rstudio.com/articles/communicating-with-js.html
observeEvent(input$today_var_shiny, { print(input$today_var_shiny) })
}
)