如何在shiny中调用htmlwidget(jsoneditor)上的javascript方法?

agxfikkp  于 2023-02-01  发布在  Java
关注(0)|答案(2)|浏览(95)

我尝试在一个shiny应用中使用listviewer包中的jsonedit,并希望默认情况下显示完全展开的树。jsonedit()函数中没有选项可以实现这一点,但底层javascript对象有一个.expandAll()方法可以实现这一点。我如何从R shiny调用这个方法?我下面的尝试在shiny应用中或直接在R中都不起作用。

library(shiny)
library(listviewer)
library(magrittr)
library(htmlwidgets)

x <- list(a=1,b=2,c=list(d=4,e='penguin'))

jsonedit(x, mode = 'view') %>% onRender("function(el,x,data) {this.expandAll();}")

shinyApp(
  ui = shinyUI(
    fluidPage(
      jsoneditOutput( "jsed" )
    )
  ),
  server = function(input, output){
    output$jsed <- renderJsonedit({
      jsonedit(x, mode = 'view') %>% onRender("function(el,x,data) {this.expandAll();}")
    })
  }
)
dy2hfwbg

dy2hfwbg1#

jsonedit(x, mode = 'view') %>% 
  onRender("function(el,x,data) {this.editor.expandAll();}")
nwnhqdif

nwnhqdif2#

Stéphane Laurent的答案对我很有效,只要添加函数来源的包......

listviewer::jsonedit(
      x = list(a=1,b=2,c=list(d=4,e='penguin'))
      mode="view"
    ) %>% htmlwidgets::onRender("function(el,x,data) {this.editor.expandAll();}")

相关问题