Одиночная кавычка в строке преобразует 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:
- https://github.com/ebailey78/shinyBS/commit/67ba9a262115aba974f2f0ab0d11095aee839b53 (2015-04-28)
- https://github.com/ebailey78/shinyBS/issues/30
Но последняя версия CRAN немного старше (2015-03-31). Я установил последнюю версию на GitHub и запустил это приложение без проблем.
devtools::install_github("ebailey78/shinyBS@shinyBS3")
tipify
добавляет всплывающую подсказку, вставляя JavaScript на страницу. Проблема заключалась в том, что код JavaScript создавался из строк в одинарных кавычках, но содержимое строки не экранировалось. Это вызывает ошибку разбора JavaScript, поэтому ползунок выглядит как обычный <input>
элемент.
Вы можете избежать апострофов с помощью обратной косой черты, как показывал @akrun, или HTML избежать этого с помощью '
Мы можем сделать побег \\'
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")
})})
--выход