Espacio de nombres de módulos brillantes fuera de la interfaz de usuario para enlaces javascript

Estoy tratando de usar módulos brillantes para reutilizar la interfaz de usuario y el código del servidor para presentar tres conjuntos de datos diferentes que comparten la misma presentación.

Encontrar un pequeño desafío al tratar con el espacio de nombres cuando se utiliza la creación de un enlace emergente modal basado en JavaScript fuera del código de UI / servidor.

Aquí está mi código de aplicación que no funciona:

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)

Una versión de trabajo se mostrará correctamentemyLinkName en la parte de descripción de la ventana emergente modal. La razón por la que este código no funciona es porque el valor de ID del componente de la IU se crea fuera del código de la IU sin la contención del espacio de nombres. Lo entiendo. Pero no puedo encontrar la manera de volver a trabajarlo para que el espacio de nombre coincida.

¿Alguna idea / opciones?

Respuestas a la pregunta(1)

Su respuesta a la pregunta