我正在尝试识别闪亮仪表板中使用的gvistable中的选定行。我已按照演示(EventListener)规定的步骤操作,但由于某种原因,我无法识别所选行。
这是一个简化和修改过的代码,可以让问题清晰明了。
library(shiny)
library(googleVis)
ui <- dashboardBody(box(title = "data table",width = 4, htmlOutput("dt")),
verbatimTextOutput("row"))
server <- shinyServer(function(input,output,session){
datatable <- data.frame("symbol" = c("alpha", "beta", "gamma"))
output$dt <- renderGvis({
d <- gvisTable(datatable, chartid = "mytable", options = list(gvis.listener.jscode= "
var sel = chart.getSelected();
var row = sel[0].row;
var text = data.getValue(row,1);
Shiny.onInputChange('text');
"))
})
output$row <- renderPrint({
input$text
})
})
shinyApp(ui, server)
我总是在verbatimtextoutput
上获得NULL输出。任何人都可以指出我在这里犯的错误吗?!
我通过论坛尝试了大量搜索,但找不到解决方案。
答案 0 :(得分:0)
我可能根本就没有问过这个问题,因为解决方案非常简单。但是,这可能对其他用户有用,当你有其他图形或函数使用gvistable中的对象作为输入时,这是一个很酷的选择。 这是修复
string filePath = @"C:\MyDir\MySubDir\myfile.ext";
string file2 = "otherfile.txt";
// C:\MyDir\MySubDir\otherfile.txt
string result = Path.Combine(Path.GetDirectoryName(filePath), file2);
这有所不同,Shiny.onInputChange有两个参数,我错过了第二个参数。
希望这有助于其他人尝试类似的东西。 顺便说一句,另一种可能的解决方法是使用shinyjs。无论如何我也会尝试。