r-为什么在闪亮的应用程序中使用tagQuery()



我读过这篇关于tagQuery的文章,想知道在一个闪亮的应用程序中有什么实际用途。

是否以类似于shinyjs::addClass()的方式修改服务器端的标签?

我想把@MikkoMarttila答案的几个方面加起来(太长了,无法发表评论(:

tagQuery为您提供了从R中操纵HTML标记的可能性(不需要JS(。

请参阅杰出用户界面与闪亮中的这一部分,了解许多优秀的示例。

我最近在这里给出了一个相关的答案,它展示了如何使一个闪亮的应用程序符合w3c——因此tagQuery可以帮助您的应用程序生产做好准备(关于UI(。

还要注意,tagQuery可以在renderUI调用内部/与之一起动态使用——请参阅此示例。

我认为当您需要修改或提取潜在的深度嵌套HTML结构。这种需要可能特别出现在您无法控制创建原始结构的情况下,但要依靠一揽子计划来为你做到这一点。

举个真实的例子,我的这个老答案可以从使用CCD_ 6中受益。

作为设置,我们有一个动态生成的菜单。在那里,我们想添加内部ul元素的id属性,以便以后能够使用JavaScript将该元素作为目标。

library(shinydashboard, warn.conflicts = FALSE)
library(htmltools)
tabs_list <- lapply(1:2, function(x) {
menuSubItem(text = paste("tab", x))
})
menu <- menuItem("test_tabs", tabs_list)
print(menu)
#> <li class="treeview">
#>   <a href="#">
#>     <span>test_tabs</span>
#>     <i class="fa fa-angle-left pull-right" role="presentation" aria-label="angle-left icon"></i>
#>   </a>
#>   <ul class="treeview-menu" style="display: none;" data-expanded="test_tabs">
#>     <li>
#>       <a href="#">
#>         <i class="fa fa-angle-double-right" role="presentation" aria-label="angle-double-right icon"></i>
#>         tab 1
#>       </a>
#>     </li>
#>     <li>
#>       <a href="#">
#>         <i class="fa fa-angle-double-right" role="presentation" aria-label="angle-double-right icon"></i>
#>         tab 2
#>       </a>
#>     </li>
#>   </ul>
#> </li>

这是最初的方法:

menu_orig <- menu
menu_orig$children[[2]] <- tagAppendAttributes(menu_orig$children[[2]], id = "test_tabs")

有了tagQuery(),这将更容易理解,也更健壮:

menu_tq <- tagQuery(menu)$find("ul")$addAttrs(id = "test_tabs")$allTags()
# Check that we got the same result
identical(format(menu_orig), format(menu_tq))
#> [1] TRUE

相关内容

  • 没有找到相关文章

最新更新