Я пытаюсь использовать Shiny
. Я привык к другим языкам программирования (немного Java из разработки приложений), где есть onClick
события, которые вызывают изменения других переменных. Я знаю, что в MVC после изменения элемента представления контроллер может изменять переменные модели в фоновом режиме, а затем обновлять представление без запуска бесконечного цикла событий для других элементов.
Код здесь работает, но вызывает ненужные и нежелательные циклы:
Если вы выберете 49 в качестве n, число дюжин изменится на 4, что изменит n на 48, что изменит число десятков на 4, что не вызовет событие изменения.
Если вы затем измените n на 49, десятки изменятся на 4, что не вызовет события изменения.
Вроде расточительно и ресурсоемко ..
library(shiny)
ui <- fluidPage(
sliderInput(inputId = "dozens",
label = "Dozens:",
min = 1,
max = 5,
value = 2),
sliderInput(inputId = "n",
label = "n:",
min = 1,
max = 60,
value = 24)
)
server <- function(input, output,session) {
observeEvent(input$dozens,{
updateSliderInput(session,"n",value=12*input$dozens)
})
observeEvent(input$n,{
updateSliderInput(session,"dozens",value=round(input$n/12))
})
}
shinyApp(ui = ui, server = server)
Как правильно?
observeEvent(list(input$dozens,input$n),{ ...... }
и сгруппировать два updateSliderInput вместо.......
. Извините, если глупо, не пробовал. - person Stéphane Laurent   schedule 30.08.2019