首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动应用程序时,我可以强制加载shinyTree吗?

启动应用程序时,我可以强制加载shinyTree吗?
EN

Stack Overflow用户
提问于 2022-03-21 20:51:45
回答 1查看 52关注 0票数 0

摘要:当我将一个shinyTree (来自同名的R包)放入dropdownButton (来自shinyWidgets包)时,在用户以某种方式与树进行交互之前,似乎无法从input变量访问所讨论的树。有什么方法,我可以强迫树加载时,应用程序加载在开始?

下面是一个最小的(几乎)示例:

代码语言:javascript
复制
library(shiny)
library(shinyWidgets)
library(shinyTree)
library(magrittr)

render.as.text <- function(t) {
  if (is.null(t)) {
    'argument is NULL'
  } else {
    q <- get_selected(t)
    if (length(q) == 0) {
      'none selected'
    } else {
      paste(q, sep=', ', collapse=', ') 
    }
  }
}

ui <- fluidPage(
  dropdownButton(shinyTree('tree', checkbox=TRUE), circle=FALSE, inputId='dd')
)

server <- function(input, output, session) {
  output$tree <- renderTree({ list(OptionA = structure(list(OptionAA='', OptionAB=''), stopened=TRUE), OptionB='') })
  updateActionButton(session, 'dd', label='initial label')
  
  observe({
    updateActionButton(session, 'dd', label=render.as.text(input$tree))
  }) %>% bindEvent(input$dd_state)  
}

shinyApp(ui = ui, server = server)

当我运行这个应用程序时,按钮以文本‘初始标签’开始(如预期的那样),然后当我第一次单击它时,文本更改为‘参数为NULL’(显示变量input$tree有一个NULL值),但是树在下拉列表中正确显示。如果我再次单击按钮以关闭下拉列表,文本‘参数为NULL’将保持不变,直到我实际选择树的一个或多个复选框之后(在再次单击该按钮之后),它将显示一个逗号分隔的选定选项列表,或者按预期显示“none selected”选项。

我非常希望能够引用input$tree,从用户第一次在应用程序中执行任何操作开始--理想情况下,我希望在服务器或ui代码(或两者都插入)中插入一些命令,这意味着用户第一次单击按钮时,其文本将直接更改为“none selected”,因为input$tree不再是NULL。这个是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-21 21:50:55

更改render.as.text函数的缺省值是否符合您的目的?

代码语言:javascript
复制
library(shiny)
library(shinyWidgets)
library(shinyTree)
library(magrittr)

render.as.text <- function(t) {
  if (is.null(t)) {
    'none selected'
  } else {
    q <- get_selected(t)
    if (length(q) == 0) {
      'none selected'
    } else {
      paste(q, sep=', ', collapse=', ') 
    }
  }
}

ui <- fluidPage(
  dropdownButton(shinyTree('tree', checkbox=TRUE), circle=FALSE, inputId='dd')
)

server <- function(input, output, session) {
  output$tree <- renderTree({ list(OptionA = structure(list(OptionAA='', OptionAB=''), stopened=TRUE), OptionB='') })
  updateActionButton(session, 'dd', label='initial label')
  
  observe({
    updateActionButton(session, 'dd', label=render.as.text(input$tree))
  }) %>% bindEvent(input$dd_state)  
}

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

https://stackoverflow.com/questions/71563949

复制
相关文章

相似问题

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