2017-01-02 96 views
0

我想將一個向量作爲一個JS數組傳遞給extendshinyjs,但似乎該向量實際上是作爲一個字符串傳遞的。 這裏是我的代碼:如何將R向量作爲JS數組傳遞給shinyjs?

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

的載體沒有得到作爲字符串傳遞,它被轉換爲JavaScript數組。 JavaScript的參數是一個元素,其中該元素是您在傳遞的載體數組 -

試試這個(就像我告訴你在另一個線程我沒有說謊!):

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

謝謝,從來沒有打算懷疑,我只是知道太少,從你以前的答案前進:)順便說一句,我不知道是什麼傳遞給'el',而是簡單地將'params [0]'添加到代碼I張貼工作 – Dambo