Я создаю conditionalPanel в приложении Shiny. Я пытаюсь отладить условие JavaScript, но, не проверяя его, я просто угадываю случайные биты JavaScript. Есть ли способ проверить состояние напрямую?
selectizeInput('groups','Groups:',
choices = list('Choice1' = 'choice1','Choice2' = 'choice2'),
multiple = TRUE,selected = NULL
)
conditionalPanel(
print("input.groups.indexOf('choice2') >= 0"), # desired output
condition = "input.groups.indexOf('choice2') >= 0",
selectInput("statusfilter", "StatusFilter",
list("NewChoice1" = "nc1","NewChoice2" = "nc2"))
)
Вышеприведенный код (обобщенный из моего производственного кода) показывает conditionalPanel при запуске, прежде чем я даже нажму на выбор. Как только я это сделаю, он исчезнет, пока я не выберу "выбор2". Если бы я мог проверить состояние, я мог бы исправить это быстро.
После комментирования нашего утверждения print, чтобы код запускался, если вы откроете консоль javascript, вы увидите сообщение об ошибке:
Error parsing expression: input.groups.indexOf('choice2') >= 0
Это говорит о разрыве кода JS. Это связано с тем, что input.groups
равно null, и выполнение .indexOf
при нулевом значении вызывает ошибку.
Итак, что вы хотите в этом состоянии:
condition = "input.groups !== null && input.groups.indexOf('choice2') >= 0"