R 闪亮销毁观察事件

2024-02-27

我是 R Shiny 的新手。我正在尝试创建一个带有一些动态生成的按钮的应用程序。每个按钮都有一个与之关联的observeEvent。我想添加一个重置按钮来删除所有observeEvents。我浏览了一些链接,发现 destroy() 函数可以用于相同的用途,但我无法弄清楚如何使用它。有什么建议么?谢谢。

library(shiny)
ui<-fluidPage(
  actionButton(inputId = "add",label = "Add Stuff"),
  htmlOutput("obs"),
  actionButton("reset","Reset")
)
server<-function(input,output,session){

  output$obs<-renderUI(HTML({names(input)}))

  observeEvent(input$add,{
    addModal<-function(failed=FALSE){

      modalDialog(size = "l",easyClose = T,title = "Add",footer = "",
                  selectInput(inputId = "stuff",label = "Select",choices = c("A","B","C","D","E")),
                  numericInput(inputId = "numstuff",label = "Quantity",min = 1,max = 5,value = 1),
                  actionButton(inputId = "add2",label = "Add")
                  )

    }
    showModal(addModal())
  })

  num<<-0
  observeEvent(input$add2,{
    num<<-num+1
    insertUI(selector = "#add",where = "beforeBegin",
             ui = actionButton(inputId = paste0("comp",num),label = paste0(input$stuff,":",input$numstuff))
    )
    lapply(num:num,function(i){
    observeEvent(input[[paste0("comp",i)]],{
      modModal<-function(failed=FALSE){

        modalDialog(size = "l",easyClose = T,title = "Delete",footer = "",
                    # numericInput(inputId = "newquan",label = "New Quantity",min=1,max=5,value=1),
                    actionButton(inputId = paste0("gomod",i),label = "Delete")
        )
      }
      showModal(modModal())
    },ignoreInit = T)

    observeEvent(input[[paste0("gomod",i)]],{
      nm<-paste0("#comp",i)
      removeUI(selector=nm)
    })

  })
  })

  observeEvent(input$reset,{
    observers<-names(input)
    lapply(observers,function(x){
      if(substr(x,1,4)=="comp"){
        obs<-input[[x]]
        obs$destroy()
      }
    })
  })

}
shinyApp(ui=ui,server=server)

您必须分配observe (or observeEvent)到一个变量(例如o)然后调用o$destroy观察者体内。看看这个应用程序 https://gist.github.com/jcheng5/9504798d93e5c50109f8bbaec5abe372#file-create_forked_task-r-L33-L38一个使用这个的很好的例子(尽管用例,即在 Shiny 中创建“并发的、分叉的、可取消的任务”,可能比你的复杂得多)。无论如何,您都可以在那里看到正在运行的机制。

您也可能对。。。有兴趣this app https://github.com/rstudio/shiny/issues/1486#issuecomment-270401565,我认为这可以以更简单的方式完成你想要的事情(使用once = TRUE争论)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 闪亮销毁观察事件 的相关文章

随机推荐

  • 通过id获取元素当前高度

    我有一个元素如下 div style width 20 div div style width 80 div 本质上 导航位于左侧 内容位于右侧 现在我正在动态调整两者的大小loadContent and loadNavigation页面加
  • 函数参数常量是否允许不匹配?

    关于using const功能参数 https stackoverflow com questions 117293 use of const for function parameters我听说在某些 OS X 系统上参数的常量性被破坏到
  • Twitter 引导程序更改词缀偏移量

    我有一个想要 子导航 的网站 因此 当您滚动到部分时 其工具栏将固定在主工具栏下方 我可以正常工作 但初始化后无法更改顶部偏移量 文档说 贴上 刷新 将词缀与添加或删除元素结合使用时 从 DOM 中 您需要调用刷新方法 但是当我尝试这个时我
  • WPF Richtextbox FontFace/FontSize

    我目前正在尝试在 WPF 项目中创建一些基本的文字处理功能 我正在使用 RichTextBox 并且知道所有的 EditingCommands ToggleBold ToggleItalic 等 我所坚持的问题是允许用户更改字体大小和字体
  • Internet Explorer 10/11 和旧的 .net Framework 1.1 网站的兼容性问题

    场景 我有一个用 net 框架1 1 开发的非常旧的网站 该网站在 Internet Explorer 10 11 中存在多个问题 可以使用兼容性视图进行修复 问题 问题是框 架 1 1 无法将 Internet Explorer 10 1
  • Eclipse 抽象语法树差异

    在 Eclipse 中给出以下代码 import org eclipse jdt core dom AST import org eclipse jdt core dom ASTParser import org eclipse jdt c
  • 递归包含所有模型子目录

    如何递归加载 models 和 lib 目录中的所有目录 在 application rb 中 我有以下几行 config autoload paths Dir Rails root join app models config autol
  • Xcode:UI 自动化:waitForValid()

    有一个 waitForInvalid 但 waitForValid 函数呢 由于某种原因 push popTimeout 在很多情况下对我不起作用 苹果 如果元素是 有效 但不是 可见 则可能返回得太早 这应该等到其可见且有效 UIATar
  • Firestore 添加文档 ||离线||回调[重复]

    这个问题在这里已经有答案了 期间未收到在集合中添加文档的回调offline 它在在线模式下运行良好 但是 文档正在被添加 并且侦听集合的侦听器正在被添加document快照 let database Firestore firestore
  • 带有外部第三方 jar 的 Eclipse 插件

    我有一个 RCP 应用程序 其中包含不同的插件 在其中一个插件中 我使用外部第三方 jar 由于版权原因 我无法将该 jar 捆绑到我的产品中 所以我尝试在运行时将 jar 作为外部 jar 包含在内 我所做的如下 在插件manifest
  • 为什么mysql无法创建新用户?

    mysql gt select user host from mysql user user host root 127 0 0 1 root 1 debian sys maint localhost developer localhost
  • 使用 QT 读取 Linux/Ubuntu 上的电池状态

    我目前正在使用 qt 开发一个应用程序 目标是运行 ubuntu 14 04 的平板电脑 由于设备上的电池指示器很差 并且应用程序将长时间全屏运行 因此我想在应用程序内显示电池指示器 搜索发现主要是旧结果或对 windows android
  • 找不到元素“context:annotation-config”的声明

    每当我写作时 春天
  • Highcharts,使 y 轴从零开始

    我想这对某些人来说应该是理所当然的 但我在那些可怕的自动生成的文档中找不到它 您应该在图表对象中添加 yAxis 属性min 0这是一个类似的问题 如何设置 Highcharts 图表最大 y 轴值 https stackoverflow
  • 让Git在分支之间保留不同的section内容

    我正在开发一个用户脚本 我的雇主要求我开始通过 Git 进行管理 现在 我有一个稳定文件和一个测试版文件 以便组织中的每个人都可以安装稳定代码 但如果愿意 可以选择帮助测试测试版添加内容 该文件的某些部分应保持不同 内容和更改不应在分支之间
  • 使用 pandoc ruby​​ 将 HTML 和内联 Mathjax 数学转换为 LaTeX

    我正在构建一个Rails应用程序 并且正在寻找一种方法将带有html和内联MathJax数学 TeX 的数据库条目转换为LaTeX以创建pdf 我发现了和我类似的问题 使用 pandoc 将 html mathjax 转换为 Markdow
  • 这个==- JavaScript 运算符是什么?

    当我发现时 我跌跌撞撞地尝试不同的条件 or 在 JS 控制台中 您可以编写 var a 那么以下是正确的 a 但这是错误的 a 然而 如果你说 a or a 那么这是什么俏皮的东西 操作员 他们不是不同的运营商 Writing a 被解析
  • 使用 XAMPP 包在本地显示 php 站点时出现问题。站点在远程服务器上运行良好

    我在 stackoverflow com 上发表的第一篇文章 一个很棒的网站 我希望我的帖子能为他人的利益做出贡献 情况 我受委托翻新一处really小型 现有 php 驱动的网站 于是 我开始搭建我的环境 Dreamweaver 已安装
  • Selenium 使用 Firefox 配置文件

    我尝试在 Windows 10 系统上使用 Selenium Webdriver 和 Python 来实现浏览器操作的一些自动化 但我有这个问题 Selenium 启动的 Firefox 窗口没有 看到 我已经登录 并且目标站点将我发送到登
  • R 闪亮销毁观察事件

    我是 R Shiny 的新手 我正在尝试创建一个带有一些动态生成的按钮的应用程序 每个按钮都有一个与之关联的observeEvent 我想添加一个重置按钮来删除所有observeEvents 我浏览了一些链接 发现 destroy 函数可以