2016-06-13 11 views
7

ich eine Schachtel in meiner glänzenden Anwendung, die eine Schaltfläche in einem glänzenden Armaturenbrett Box wie diese aufgenommen hat:R glänzend: In Weblink zu actionButton

shiny::fluidRow(
    shinydashboard::box(title = "Intro Page", "Some description...", 
     shiny::actionButton(inputId='ab1', label="Learn More", icon = icon("th")) 
) 
) 

Ich möchte einen Weblink in der Schaltfläche enthalten, so dass, wenn Ich klicke darauf, es sollte die entsprechende Webseite in einem neuen Tab öffnen.

Ich weiß, dass ich diese stattdessen tun:

# this does not create a submit button though, it just creates a link. 
tags$div(class = "submit", 
     tags$a(href = "www.google.com", 
       "Learn More", 
       target="_blank") 
) 

Aber mit actionButton, gibt es eine schöne Taste und ich kann ein Symbol, um es hinzuzufügen, die ästhetisch besser aussieht.

enter image description here

Wie füge ich einen Link zu actionButton in glänzend?

Antwort

12

können Sie den Parameter

onclick ="location.href='http://google.com';" 

Zum Aktionstaste und klicken Sie es auf google.com im aktuellen Fenster nehmen oder Sie können

onclick ="window.open('http://google.com', '_blank')" 

hinzufügen und Sie genommen wird, in einem neuen Tab zu Google

Das

shiny::fluidRow(
    shinydashboard::box(title = "Intro Page", "Some description...", 
     shiny::actionButton(inputId='ab1', label="Learn More", 
          icon = icon("th"), 
          onclick ="window.open('http://google.com', '_blank')") 
) 
) 
ist
+0

Wow!Das hat funktioniert! Ich konnte nirgends eine Antwort finden, wenn ich googelte, froh, dass ich es hier als Frage gepostet habe. Danke vielmals! –

3

Die onclick Methode ist einfach, aber es benötigt Javascript. Noch wichtiger ist, dass es unangenehm ist, wenn Sie die Verbindung dynamisch generieren möchten. Ich möchte einen Link in meiner App haben, der je nach Benutzereingabe eine bestimmte Seite öffnet, und ich habe festgestellt, dass Sie einen Link einfach als Schaltfläche kleiden können.

Zuerst beschäftige ich mich mit dem dynamischen Teil mit uiOutput und renderUI, weil die Verbindung nur im Server Teil erzeugt werden kann. Die einfache Verbindung wird

a(h4("Open Link"), target = "_blank", href = paste0("http://www.somesite/", some_link))

einfach sein, diese Linie in R laufen wir

bekommen
<a target="_blank" href="http://www.somesite/somelink"> 
    <h4>Open Link</h4> 
</a> 

Um eine Schaltfläche erstellen wir auf das, was ein Aktionstaste aussehen aussehen kann.

> actionButton("download", "Download Selected", 
       icon = icon("cloud-download")) 
<button id="download" type="button" class="btn btn-default action-button"> 
    <i class="fa fa-cloud-download"></i> 
    Download Selected 
</button> 

Dann können wir das

shiny::a(h4("Open Link", class = "btn btn-default action-button" , 
    style = "fontweight:600"), target = "_blank", 
    href = paste0("http://www.somesite/", some_link)) 

zu bekommen

<a target="_blank" href="http://www.somesite/some_link"> 
    <h4 class="btn btn-default action-button" style="fontweight:600">Open Link</h4> 
</a> 

Jetzt haben wir einen Link, der wie eine Schaltfläche aussieht, und Sie können weiter seinen Stil anpassen entweder mit Stil Parameter oder kundengebundenes css. Öffnen Sie Ihre App mit den chrome/firefox-Entwicklertools, modifizieren Sie die CSS-Datei mit dem gewünschten Effekt und fügen Sie die geänderte CSS-Datei im www-Ordner zu style.css hinzu, um den Standardstil zu überschreiben.

Wenn Sie die Ausgabe von vielen HTML-Tags Funktion betrachten, werden Sie feststellen, dass Sie tatsächlich viele Sachen zusammen kombinieren und zusammenbauen können, um viele Anpassungen zu erhalten.