在创建闪亮的模块时,需要使用ui端的NS
或服务器端的session$ns()
对模块ID进行命名空间命名。但是据我所知,没有办法仅靠本身获取模块ID。我可以做类似的事情
module_ui = function(id){
ns = NS(id)
tagList(textOutput(ns('textOut')))
}
module_server = function(input, output, session){
output$textOut = renderText({
gsub('-meh$','',session$ns('meh'))
})
}
ui = fluidPage(module_ui('module'))
server = function(input,output){
callModule(module_server, id = 'module')
}
shinyApp(ui = ui, server = server)
并使用gsub
或类似的函数来隔离模块名称,但是我想知道是否有主流的方法。看着documentation for the session object,我没有找到其他方法,但是我认为必须有一种方法可以直接从会话对象访问ID
编辑:我确实找到了一种更直接的方法,但是我不确定它是否客观上比以前的方法好
environment(fun = session$ns)$ns_prefix