如何将R矢量作为JS数组传递给shinyjs?

时间:2017-01-02 17:06:01

标签: r shiny shinyjs

我想将一个向量作为JS数组传递给extendshinyjs,但似乎该向量实际上是作为字符串传递的。 这是我的代码:

ui.R

shinyUI( fluidPage(
  useShinyjs(),
  extendShinyjs(text = jsCode),
 tags$div('color names',
  tags$p(class='colorName'),
  tags$p(class='colorName'),
  tags$p(class='colorName')
 )


))

server.R

shinyServer(
    function(input,output,session) {
      x <- c('red', 'yellow', 'green')
        js$pageCol(x)
      })

global.R

library(shinyjs)
library(shiny)
jscode <-  jsCode <- "shinyjs.pageCol = function(params){
                             var $spots = $('p').text(params);
      defaultParams = ['NA','NA','NA'];
      val = shinyjs.getParams(params, defaultParams);


$spots.each(function(i) {
$(this).text(val[i]);
}); 

}"

在右边看起来现在的样子,在左侧我期望看到什么

On the right how it looks like now, on the **left** what I would expect to see

1 个答案:

答案 0 :(得分:1)

矢量未作为字符串传递,它正在转换为javascript数组。 javascript参数是一个包含一个元素的数组,其中该元素是您传入的向量(正如我在另一个帖子中告诉您的那样 - 我没有说谎!)

试试这个:

shinyjs.pageCol = function(params){
  var cols = params[0];
  $('p').each(
    function(i, el) {
      $(el).text(cols[i]);
    }
  );
}