r - 将 ID 应用于 taglist 中的 renderDT()
问题描述
我有一个在一个巨大的函数中创建的动态界面。该函数还输出一个包含所有输入功能和其他内容的标记列表。其中有一个 DT 表。这一切都很好,工作正常。现在我希望能够在 DT 中替换 Data(),但是在创建 taglist 时,我可以为 datatable() 分配一个 elementID,但 renderDT 会覆盖它。
如果我省略了 renderDT() 表仍然显示,但 replaceData() 失败并显示
DataTables 警告:表 id=DataTables_Table_0 - JSON 响应无效。有关此错误的更多信息,请参阅http://datatables.net/tn/1
错误信息。
当前有效但非常糟糕的解决方案:如果我有 renderDT(),则会创建一些以“out”开头的散列 ID。这可以在observe() 中捕获并用于创建datatableProxy() 对象,然后该对象可用于replaceData()。这样做的一个问题是你只能有一个表,这很糟糕。
DT git 上已经存在问题:https ://github.com/rstudio/DT/issues/567但没有解决方案。
library(shiny)
ui <- fluidPage(
uiOutput("inputs")
)
server <- function(input, output, session) {
output$inputs <- renderUI({
tagList( h1("a table has no id")
,renderDT(datatable(mtcars,elementId = "thisDoesHaveAnID"))
,actionButton("replaceDataGo","Replace data go!")
)
})
observeEvent(input$replaceDataGo,{
tableid <- gsub("_.*","",names(input)[grep("out.*",names(input))][1])
tableProxy <- dataTableProxy(tableid,session = session)
replaceData(tableProxy,mtcars[1:input$replaceDataGo,])
})
}
shinyApp(ui, server)
是否有任何方法将标签列表中可能已经存在的 ID 应用于此渲染?
解决方案
推荐阅读
- reactjs - 在 React 16 中无法通过 this.context 访问 contextType
- scala - 如何将该组列表的功能重新制作为简单递归?
- php - 在 WAMP 和 phppgadmin 上集成 postgreSQL
- javascript - 从 AngularJS 1.5 升级到 1.7 会抛出“无法复制!不支持复制 Window 或 Scope 实例”
- html - DevicePixelRatio 似乎突然与 Windows 比例叠加
- python - 获取二维数组中最近的坐标
- python - 为什么 vgg.prepare() 方法会创建给定图像的 9 个副本?
- python - 用于模式研究的 Python 正则表达式
- php - 如何显示输入数组的验证错误?
- ios - 在包含 collectionView 的 tableview XIB 中呈现 DocumentInteractionController