При создании блестящего модуля необходимо указать пространство имен идентификатора модуля, используя NS
на стороне пользовательского интерфейса или session$ns()
на стороне сервера. Однако, насколько я знаю, просто невозможно получить идентификатор модуля. Я мог бы сделать что-то вроде
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
или подобную функцию, чтобы изолировать имя модуля, но я хотел бы знать, есть ли основной способ сделать это. Глядя на документацию для объекта сеанса я не видел другого пути, но я предполагаю, что должен быть способ доступа к идентификатору напрямую из объекта сеанса
Редактировать: Я нашел немного более прямой путь, но я не уверен, объективно ли он лучше, чем предыдущий метод
environment(fun = session$ns)$ns_prefix