Блестящие наблюдения за событиями на разных мероприятиях - PullRequest
0 голосов
/ 02 октября 2019

Я хотел бы сделать что-то как: есть actionLink a и actionLink b. И они могут вызвать UpdateNumericInput (), который назначает некоторые веса. Я также могу вручную изменить веса на numericInput () в пользовательском интерфейсе. Что я хочу понять, так это то, что при нажатии на actionLink a текстовым выводом будет «клик по a», и то же самое произошло с actionLink b как «клик по b». Я также хочу, чтобы текстовый вывод отображался как «вручную измененные веса», когда я фактически редактировал веса в пользовательском интерфейсе. Есть ли способ понять это?

#triggered by actionLink a
apply_a_weights = observeEvent(input$a_weight_link, {

v_a = get_a_weights()

v_a = setNames(as.double(unname(v_a)), names(v_a))

for (nm in names(v_a)) {
  updateNumericInput(session, nm, value = v_a[[nm]])
}
output$selected_weight <- renderUI({HTML("You have changed to <B>a weight</B>")}) }, priority = 1)

# triggered by actionLink b
apply_b_weights = observeEvent(input$b_weight_link, {

v_b = df_dmd$b_weights
names(v_b) = df_dmd$input_id

for (nm in names(v_b)) {
  updateNumericInput(session, nm, value = v_b[[nm]])
}
output$selected_weight <- renderUI({HTML("You have changed to <B>b weight</B>")})}, priority = 1)

Я также пытался поместить эту часть на сервер. R в качестве текстового вывода по умолчанию:

output$selected_weight <- renderUI({HTML("<B>manually</B> changed the weights")})

Но эти коды не работают. Когда я самостоятельно меняю вес, «вручную измененные веса» не отображаются.

Большое спасибо

1 Ответ

0 голосов
/ 03 октября 2019

Вы не предоставляете воспроизводимый код, поэтому трудно угадать. Возможно, проблема в дублировании output$selected_weight.

Определите reactiveVal для хранения текста, который будет отображаться, например, в начале server:

Text <- reactiveVal()

Затем в ваших двух observeEvent удалите output$selected_weightи выполните:

#triggered by actionLink a
apply_a_weights = observeEvent(input$a_weight_link, {

v_a = get_a_weights()

v_a = setNames(as.double(unname(v_a)), names(v_a))

for (nm in names(v_a)) {
  updateNumericInput(session, nm, value = v_a[[nm]])
}

Text("You have changed to <B>a weight</B>") 

}, priority = 1)

# triggered by actionLink b
apply_b_weights = observeEvent(input$b_weight_link, {

v_b = df_dmd$b_weights
names(v_b) = df_dmd$input_id

for (nm in names(v_b)) {
  updateNumericInput(session, nm, value = v_b[[nm]])
}

Text("You have changed to <B>b weight</B>") 

}, priority = 1)

Наконец, за пределами observeEvent s выполните

output$selected_weight <- renderUI({HTML(Text()})

Опять же, вы не предоставляете минимальный воспроизводимый код, поэтому я не уверенмой ответ дает то, что вы хотите.

...