Одиночная кавычка в строке преобразует sliderInput в numericInput при использовании блестящей

Я хочу добавить всплывающие подсказки к своим кнопкам действий или ползункам с пакетом shinyBS и функция tipify, Я добавил текст для аргумента "заголовок" всплывающей подсказки. Однако, когда у моего текста есть апостроф (одинарная кавычка), он выдает ошибку. Что не происходит с ярлыком самого actionButton!

library(shiny); library(shinyBS)
shinyApp(ui = basicPage(p("title"), uiOutput("button_with_tooltip"), uiOutput("input_slider")),
         server = function(input, output, session){
              output$button_with_tooltip = renderUI({
                   tipify(actionButton("button", label="I'm doing nothing"), title="I am doing nothing")})})

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

И еще более удивительным поведенческим следствием этой ошибки является inputSliderони автоматически превращаются в numericInput когда заголовок всплывающей подсказки содержит одинарную кавычку... странно! Попробуй это:

shinyApp(
     ui = basicPage(p("title"), uiOutput("input_slider")),
     server = function(input, output, session){
          output$input_slider = renderUI({
               tipify(sliderInput("slider", label="I'm a simple slider", min=0, max=10, value=5), title="I'm doing nothing")
          })})

Почему это происходит и как я могу переопределить это? Спасибо,

NB: я француз, поэтому мне нужны апострофы

Спасибо,

2 ответа

Решение

Похоже, это была ошибка, которая была исправлена ​​в последней версии на GitHub:

Но последняя версия CRAN немного старше (2015-03-31). Я установил последнюю версию на GitHub и запустил это приложение без проблем.

devtools::install_github("ebailey78/shinyBS@shinyBS3")

tipify добавляет всплывающую подсказку, вставляя JavaScript на страницу. Проблема заключалась в том, что код JavaScript создавался из строк в одинарных кавычках, но содержимое строки не экранировалось. Это вызывает ошибку разбора JavaScript, поэтому ползунок выглядит как обычный <input> элемент.

Вы можете избежать апострофов с помощью обратной косой черты, как показывал @akrun, или HTML избежать этого с помощью &#39;

Мы можем сделать побег \\'

library(shiny)
library(shinyBS)
shinyApp(
  ui = basicPage(p("title"), uiOutput("input_slider")),
  server = function(input, output, session){
          output$input_slider = renderUI({
        tipify(sliderInput("slider", label="I'm a simple slider",
             min=0, max=10, value=5), title="I\\'m doing nothing")
})})

--выход

Другие вопросы по тегам