Я хочу использовать блестящее приложение R с js SDK одной социальной сети.Я хочу получить идентификатор пользователя из js API и установить его в качестве значения по умолчанию для формы textInput.Но только один раз, в первый раз.
Лучший результат, которого мне удалось достичь, используя функцию Shiny.onInputChange()
(или Shiny.setInputValue()
для блестящего> 1.1)
Пример игрушки:
ui <- fluidPage(
textInput("uid",label = h4("Input ID"),value = "1"),
actionButton("goButton", "Check this out!", class="btn-primary"),
# getting user id via js
tags$script(HTML(
'
uid = some_js_code;
console.log("My uid - " + uid);
// setting new value for input$uid variable
Shiny.onInputChange("uid", uid);
// for newer version of shiny
//Shiny.setInputValue("uid", uid);
'
)
server <- function(input, output, session) {
user<-reactive({
input$goButton
user <- some_function_for_uid(input$uid)
})
}
Проблемы:
При первой загрузке приложения значение переменной "uid" не меняется.Значение остается таким же, каким оно было в функции textInput (value="1"
)
Серверная функция some_function_for_uid()
получает новое значение переменной только , когда я нажимаю goButton.Но значение в текстовой форме остается прежним.
Как правильно изменить значение по умолчанию в textInput и избежать описанных проблем?Заранее спасибо.