Блестящее пространство имен модулей вне пользовательского интерфейса для ссылок javascript

Я пытаюсь использовать блестящие модули для повторного использования пользовательского интерфейса и серверного кода для представления трех разных наборов данных, которые используют одну и ту же презентацию.

При выполнении модальных всплывающих ссылок за пределами кода пользовательского интерфейса или сервера возникла небольшая проблема, связанная с пространством имен.

Вот мой нерабочий код приложения:

library(shiny)
library(shinyBS)
library(DT)

df <- data.frame(id = c('a', 'b', 'c'), value = c(1, 2, 3))

on_click_js = "
Shiny.onInputChange('myLinkName', '%s');
$('#myModal').modal('show')
"

convert_to_link = function(x) {
  as.character(tags$a(href = "#", onclick = sprintf(on_click_js, x), x))
}
df$id_linked <- sapply(df$id, convert_to_link)
df <- df[, c('id_linked', 'value')]

mySampleUI <- function(id) {
  ns <- NS(id)

  fluidPage(
    mainPanel(
      dataTableOutput(ns('myDT')),
      bsModal(id = 'myModal',
              title = 'My Modal Title',
              trigger = '',
              size = 'large',
              textOutput(ns('modalDescription'))
      ),
      width = 12
    )
  )
}

ui <- fluidPage(mySampleUI('myUI'))

myServerFunc <- function(input, output, session, df) {
  output$myDT <- DT::renderDataTable({
    datatable(df, escape = FALSE, selection='none')
  })
  output$modalDescription <- renderText({
    sprintf('My beautiful %s', input$myLinkName)
  })
}

server <- function(input, output) {
  callModule(myServerFunc, 'myUI', df)
}

shinyApp(ui = ui, server = server)

Рабочая версия будет успешно отображатьсяmyLinkName в части описания модального всплывающего окна. Причина, по которой этот код не работает, заключается в том, что значение идентификатора компонента пользовательского интерфейса создается за пределами кода пользовательского интерфейса без содержания пространства имен. Я понимаю. Но я не могу понять, как его переработать так, чтобы пространство имен совпадало.

Есть идеи / варианты?

Ответы на вопрос(1)

Ваш ответ на вопрос