2016-06-13 17 views
7

Tôi có một hộp trong ứng dụng sáng bóng của tôi rằng có một nút bao gồm trong một hộp bảng điều khiển bóng loáng như thế này:R sáng bóng: Thêm weblink để actionButton

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

tôi muốn bao gồm một weblink trong nút như vậy mà khi Tôi nhấp vào nó, nó sẽ mở trang web tương ứng trong một tab mới.

Tôi biết rằng tôi có thể làm điều này thay vì:

# 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") 
) 

Nhưng với actionButton, có một nút đẹp và tôi có thể thêm một biểu tượng để nó trông thẩm mỹ tốt hơn.

enter image description here

Làm thế nào để thêm một liên kết đến actionButton trong sáng bóng?

Trả lời

12

Bạn có thể thêm tham số

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

Để nút hành động và nhấp chuột vào nó sẽ đưa bạn đến google.com trong cửa sổ hiện tại hoặc bạn có thể thêm

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

và bạn sẽ được đưa cho Google trong tab mới

Đó là

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')") 
) 
) 
+0

Wow!Điều đó đã hiệu quả! Tôi không thể tìm thấy câu trả lời ở bất cứ nơi nào khi tôi googled, vui vì tôi đăng nó như một câu hỏi ở đây. Cảm ơn rất nhiều! –

3

Các onclick phương pháp rất đơn giản nhưng nó dựa javascript. Quan trọng hơn, nó sẽ khó xử nếu bạn muốn tạo liên kết động. Tôi muốn có một liên kết trong ứng dụng của tôi mà mở trang cụ thể theo đầu vào của người dùng, và tôi thấy bạn chỉ có thể ăn mặc một liên kết như một nút.

Trước tiên, tôi xử lý phần động với uiOutputrenderUI, vì liên kết chỉ có thể được tạo trong phần máy chủ. Các liên kết đơn giản sẽ

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

Chỉ cần chạy dòng này vào R chúng tôi nhận

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

Để tạo một nút chúng ta có thể nhìn vào những gì một nút hành động như thế nào.

> 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> 

Sau đó, chúng ta có thể làm được điều này

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

để có được

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

Bây giờ chúng tôi có một liên kết giống như một nút, và bạn có thể tuỳ chỉnh phong cách của mình hoặc với tham số kiểu hoặc tùy chỉnh css. Mở ứng dụng của bạn với các công cụ chrome/nhà phát triển firefox, sửa đổi css để hiệu ứng mà bạn muốn, sau đó thêm css sửa đổi để style.css trong thư mục www để ghi đè lên phong cách mặc định.

Nếu bạn nhìn vào đầu ra của nhiều thẻ html chức năng, bạn sẽ tìm thấy bạn thực sự có thể kết hợp và lắp ráp rất nhiều thứ với nhau để nhận được rất nhiều các tùy chỉnh.

Các vấn đề liên quan