首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存在onRender()函数中创建的htmlWidgets对象

保存在onRender()函数中创建的htmlWidgets对象
EN

Stack Overflow用户
提问于 2017-03-25 16:54:01
回答 1查看 247关注 0票数 1

我在一个闪亮的应用程序中使用来自htmlWidgets包的htmlWidgets()函数。我试图保存在给定的onRender()函数调用中创建的某些对象,以便它们可以在给定的onRender()函数调用之外使用。

下面是我的MWE。我正在onRender()函数中创建一个名为onRender()的对象,它只是滑块输入值乘以2。我能保存val2对象以便以后可以在onRender()函数之外使用吗?(我意识到,在这个过于简化的示例中,我不需要使用onRender()函数来创建val2对象,但我试图保持示例的简单性)。

谢谢你的建议!

代码语言:javascript
复制
library(plotly)
library(htmlwidgets)
library(shiny)

myPlot <- qplot(data=mtcars, mpg, cyl)
gMyPlot <- ggplotly(myPlot)

ui <- shinyUI(fluidPage(
  sliderInput("ci", "Value:", min = 0, max = 1, value=0.95, step=0.01),
  plotlyOutput("myTest")
))

server <- shinyServer(function(input, output) {

  ci <- reactive(input$ci)

  output$myTest <- renderPlotly(gMyPlot %>% onRender("
                  function(el, x, data) {
                  val2 = data * 2
                  console.log(val2)
                  }", data=ci()))})

shinyApp(ui, server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-26 12:15:14

这样就行了。我修改了您的示例,使其稍微更具交互性。然后,我使用javascript两次存储"val2“值,一次存储在h3标记中(我首先使用该标记),然后作为反应性input列表的一个元素(当然,这更有用)。请注意,这似乎不太有效,因为值在服务器和客户端之间来回往返。

以下是代码:

代码语言:javascript
复制
library(plotly)
library(htmlwidgets)
library(shiny)

ui <- shinyUI(fluidPage(
  tags$h3('',class ='val2'),
  sliderInput("ci", "Value:", min = 0, max = 34, value=34, step=1),
  plotlyOutput("myPlot"),
  textOutput("outval2")
))

server <- shinyServer(function(input, output) {

  ci <- reactive(input$ci)

  output$myPlot <- renderPlotly({
            mdf <- mtcars %>% filter(mpg<ci())
            myPlot <- qplot(data=mdf, mpg, cyl)
            ggplotly(myPlot) %>% onRender("function(el, x, data) {
                                            val2 = data * 2
                                            console.log(val2)
                                            $('h3.val2').text('val2:'+val2);
                                            Shiny.onInputChange('val2', val2);
                                            }", data=ci())
            })
  output$outval2 <- renderPrint({sprintf("The calculated value is:%d",input$val2)})
  }
)
shinyApp(ui, server)

下面是这个工作应用程序的屏幕截图:

一篇值得阅读的相关文章是:将闪亮的数据从客户端发送到服务器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43019197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档