2017-01-02 4 views
0

Ich möchte einen Vektor zu extendshinyjs als JS-Array übergeben, aber es scheint, dass der Vektor tatsächlich als Zeichenfolge übergeben wird. Hier ist mein Code:Wie übergibt man einen R-Vektor an shinyjs als JS-Array?

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]); 
}); 

}" 

Auf der rechten Seite, wie es jetzt aussieht, auf der links, was ich erwarten

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

Antwort

1

Der Vektor nicht als String übergeben wird immer, wird es in einem JavaScript-Array umgewandelt wird. Der JavaScript-Parameter ist ein Array mit einem Element, wo das Element der Vektor, die Sie im vergangen -

die Sie interessieren (so wie ich Sie in dem anderen Thread gesagt, ich habe nicht gelogen!):

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

Danke, ich wollte nie skeptisch sein, ich weiß einfach zu wenig, um von deiner vorherigen Antwort wegzukommen :) Übrigens bin ich mir nicht sicher, was an 'el' weitergegeben wird, sondern füge einfach' params [0] 'zum Code I hinzu gepostet hat gearbeitet – Dambo

Verwandte Themen