Применение логики conditionalPanel, где для одного switchInput установлено значение TRUE, а у ползунка есть разные входы

Я реализую приложение R Shiny, и мои навыки работы с Javascript невысоки.

Я изо всех сил пытаюсь придумать условную логику в conditionalPanel(). Как сделать так, чтобы id3 отображался только в том случае, если для id1 установлено значение ИСТИНА, а диапазон ползунка id2 имеет разные варианты выбора?

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  materialSwitch(inputId = "id1", label = "Do I want this on?", value = FALSE, status = "primary"),
  sliderTextInput(inputId = "id2", label = "Show below if the range is greater than 0", choices = 2000:2018, selected = rep(2018, 2)),
  br(), br(),
  conditionalPanel("input.id1 && input.id2[1] != input.id2[2]",
               materialSwitch(inputId = "id3", label = "To show based on conditions above.", value = FALSE, status = "primary")
  )
)

server <- function(input, output) {}

shinyApp(ui = ui, server = server)

Я также играл с пакетом shinyjs, но у меня тоже не было успеха (попытка ниже):

library(shiny)
library(shinyWidgets)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  materialSwitch(inputId = "id1", label = "Do I want this on?", value = FALSE, status = "primary"),
  sliderTextInput(inputId = "id2", label = "Show below if the range is greater than 0", choices = 2000:2018, selected = rep(2018, 2)),
  br(), br(),
  hidden(
    p(id = "element", materialSwitch(inputId = "id3", label = "To show based on conditions above.", value = FALSE, status = "primary"))
  )
)

server <- function(input, output) {
  observe({
    if (input$id1 == TRUE && (input$id2[1] != input$id2[2])) {
      show("element")
    }
  })  
}

shinyApp(ui = ui, server = server)

это 'input.id1 & input.id2 [1]! = input.ids [2]' намеренно или вы хотите использовать здесь &&?

Narendra 30.10.2018 23:49

Не намеренно, просто пытаюсь найти решение.

Phil 30.10.2018 23:52

чтобы проверить условие И, вы должны использовать &&

Narendra 30.10.2018 23:54

Конечно. В любом случае проблему не решить.

Phil 30.10.2018 23:57

input.id1 && input.id2.value! = input.id1.value?

Narendra 31.10.2018 00:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
372
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я забыл, что Javascript использует индекс с нулевой базой, в отличие от R.

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  materialSwitch(inputId = "id1", label = "Do I want this on?", value = FALSE, status = "primary"),
  sliderTextInput(inputId = "id2", label = "Show below if the range is greater than 0", choices = 2000:2018, selected = rep(2018, 2)),
  br(), br(),
  conditionalPanel("input.id1 && input.id2[0] != input.id2[1]",
           materialSwitch(inputId = "id3", label = "To show based on conditions above.", value = FALSE, status = "primary")
  )
)

server <- function(input, output) {}

shinyApp(ui = ui, server = server)

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