Я пытаюсь найти способ заставить actionButton изменять цвет (и, возможно, другие элементы стиля). Цель очень общая, и я буду использовать ее для многих ответов кнопок в моем сложном приложении shinyDashboard. Проще говоря: если нажата кнопка или изменяется определенный элемент (например, ползунок ввода), связанный с кнопкой, кнопка должна изменить цвет.
Обычно я кодирую свои кнопки в Shiny, например, вот так:
actionButton(inputId= "RunFullModel", label =icon("tree-deciduous", lib = "glyphicon"),
style = "color: white;
background-color: #35e51d;
position: relative;
left: 3%;
height: 35px;
width: 35px;
text-align:center;
text-indent: -2px;
border-radius: 6px;
border-width: 2px")),
Я просматривал свою задницу, но не повезло с чем-то, что работает. Я смотрел shinyjs от @Dean Attali, чтобы сделать это, но я могу заставить его работать только для изменения фона печатного текста, как в примере ниже. Часть, использующая ToggleClass или AddClass, похоже, не работает для actionButton ("x", "y"). Я также пробовал использовать updateActionButton из самого блестящего пакета, но это не позволяет включить style = "..." в команду.
library(shiny)
library(shinyjs)
library(shinyBs)
if (interactive()) {
shinyApp(
ui = fluidPage(
useShinyjs(),
inlineCSS(list(.red = "background: red")),
inlineCSS(list(.blue = "style = 'background-color: blue'")),
actionButton("checkbox", "Make it red"),
bsButton("checkbox2", "Make me blue"),
p(id = "element", "Watch what happens to me")
),
server = function(input, output) {
observe({
toggleClass(id = "element", class = "red",
condition = input$checkbox)
})
observe({
toggleCssClass(id = "checkbox2", class = ".blue",
condition = input$checkbox)
})
}
)
}
Демо-модель shinyjs находится здесь: http://deanattali.com/shinyjs/overview#demo и похоже, что toggleClass работает там для кнопки с идентификатором «btn», но прямого примера кода нет, а косвенный пример из другого раздела страницы shinyjs, похоже, не работает.
Вариант 3 Я попытался использовать часть style = "background-color: .... read R variable" для доступа к переменной R, которая содержит имя цвета, то есть mycolor ‹-" красный ", но это тоже не работает, и мои знания javascript слишком ограничены, чтобы понять, как это работает.
Итак, .... если у кого-то есть идея, как заставить переключение цвета работать с shinyjs или другим методом, который работает с моей кнопкой, указанной выше, я был бы очень признателен и выражаю вам свою вечную благодарность. (застрял на этом в течение нескольких недель с этой проблемой)
отметка
p.s. Я также изучил bsButtons, но они слишком ограничены для того, что я хочу, с параметрами класса по умолчанию.