Shiny中selectizeInput选择框显示undefined问题的解决方法
解决SelectizeInput选中后显示“undefined”的问题
出现“undefined”的核心原因是:你只给Selectize配置了下拉选项(option)的渲染函数,但未定义选中项(item)的渲染逻辑,组件不知道选中后该展示什么内容,因此显示undefined。
只需在render配置里同时添加item函数,和option的渲染逻辑保持一致即可解决问题,修改后的完整代码如下:
library(shiny) seldata <- data.frame("value" = c("NT", "S", "H", "D", "C"), "name" = c("NT", "♠", "♥", "♦", "♣"), "color" = c("#00F", "#000", "#F00", "#F00", "#000")) ui <- fluidPage( selectizeInput(inputId = "main_color", label = NULL, choices = NULL) ) server <- function(input, output, session) { updateSelectizeInput(session, inputId = "main_color", choices = seldata, server = TRUE, options = list(render = I( "{ item: function(item, escape) { return '<div><span style=\"color:' + escape(item.color) + '\">' + escape(item.name) + '</span></div>'; }, option: function(item, escape) { return '<div><span style=\"color:' + escape(item.color) + '\">' + escape(item.name) + '</span></div>'; }}"))) } shinyApp(ui, server)
关键修改说明
- 在
render对象中新增item函数,逻辑和option完全一致,根据item.color设置字体颜色,渲染item.name的内容 - 修正了原代码中style属性的引号拼接错误(原代码多余的
\"\"会导致样式失效)
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

