无法访问R Shiny模块中的输入变量

时间:2018-02-26 22:06:41

标签: r shiny shinyjs

我试图将模块添加到预先存在的R Shiny应用程序,以通过基于cookie的系统验证用户。要使用R Shiny中的Cookie,我已经关注this tutorial,并使用以下javascript代码扩展了shinyjs:

shinyjs.getcookie = function(params) {
    var cookie = Cookies.get("id");
    if (typeof cookie !== "undefined") {
        Shiny.onInputChange("jscookie", cookie);
    } else {
        var cookie = "";
        Shiny.onInputChange("jscookie", cookie);
    }
}
shinyjs.setcookie = function(params) {
    Cookies.set("id", escape(params), {
        expires: 0.5
    });
    Shiny.onInputChange("jscookie", params);
}
shinyjs.rmcookie = function(params) {
    Cookies.remove("id");
    Shiny.onInputChange("jscookie", "");
}

我用一个没有模块正常工作的小型R Shiny应用程序做了一个测试示例,然而,当我尝试实现一个模块来执行相同的功能时,我遇到了检索cookie的问题。

在server.R中,我可以使用以下代码检索cookie而不会出现问题:

observe({
  js$getcookie()
  print(input$jscookie)
})

但是,当我将相同的代码放入模块的服务器功能时,它每次都打印出NULL。我认为这个问题与命名空间有关,而且在server.R中可能input$jscookie指的是与模块中的input$jscookie不同的东西。但是,我对Shiny模块非常新(仅仅几天),所以我仍然不确定它们如何工作的某些方面。

有没有办法从模块中检索cookie?

0 个答案:

没有答案