2013-10-26 6 views
4

Мне сложно привязывать виджеты на моей лихой панели. Я прочитал еще один пост и получил некоторую помощь от лихого сообщества, но, только я не в состоянии связать виджетыЛичные ссылки на привязку приборной панели

Я мой text.coffee измененные, чтобы этот раздел (образец моей другой приборная панель)

click: (event) -> 
    location.href = "sample" 

Когда я нажимаю на свой текстовый виджет, ничего не происходит. Я тоже пытался это сделать, но ничего.

click: (event) -> 
    location.href = "www.stackoverflow.com" 

Однако, когда я просто добавить ниже линии Ondata части моего meter.coffee перенаправляет на stackoverflow.com.

location.href = "www.stackoverflow.com" 

Что я делаю неправильно? У вас есть пример, который я могу попробовать?

EDIT1:

Я также попытался ниже предложение без каких-либо удачи.

click: (e) -> 
    e.preventDefault() 
    location.href = "http://www.stackoverflow.com" 
+0

Каков контекст, из которого запускается этот клик. Попробуйте добавить 'return false' в конце. И 'preventDefault', если в этом есть необходимость, тоже должно быть в конце. – zishe

+0

У меня есть блок событий щелчка в моем виджет-метре, например, но добавление return false не помогает. класс Dashing.Meter расширяет Dashing.Widget @accessor 'значение', Dashing.AnimatedValue нажмите: (событие) -> location.href = "http://www.stackoverflow.com" возвращают ложные – sam

ответ

9

Получил помощь от лихого сообщества. Вот как это работает. Просто измените приборную панель Еврорадио связать страницу, которую вы хотите видеть

<li data-row="2" data-col="2" data-sizex="2" data-sizey="1" onclick="location.href='http://www.stackoverflow.com';"> 
    <div data-id="test_text_widget" data-view="Text" data-title="Test"</div> 
</li> 
+0

Черт, я собирался написать версию с атрибутом onclick =) – zishe

+0

Спасибо за ваш ответ, вы мне очень помогли! :) – gameCoder95

1

Вариант 1

Ниже будет работать, если хочет, чтобы открыть ссылку в новой вкладке мыши, и только хотите его некоторые плитки на приборной панели:

onClick="javascript: window.open('http://url', '_blank');" 

Так, например, в файле dashboard.erb вы бы следующее:

Примечание:, что в этом примере у меня есть Switcher setup (необходимо установить dashing-contrib) и используется для переключения между 2-мя плитами, использующими различные виджеты (Hotness и список по умолчанию). Это будет работать на любой плитки. Это именно то место, где я использую его.

<% content_for :title do %>Dashboard Name<% end %> 
    <div class="gridster"> 
    <ul> 

     <li data-switcher-interval="5000" data-row="1" data-col="1" data-sizex="1" data-sizey="1" onClick="javascript: window.open('http://www.stackoverflow.com', '_blank');"> 
     <div data-id="data-id-name from .rb job" data-view="Hotness" data-title="Title of Widget" data-moreinfo="more information text" data-cool="1" data-warm="30"></div> 
     <div data-id="data-id-name from .rb job" data-view="List" data-unordered="true" data-title="Title of Widget" data-moreinfo="more information text"></div> 
     <i class="fa fa-warning icon-background-small"></i>     
     </li> 

    </ul> 
    </div> 

Вариант 2

Другой способ сделать это, чтобы добавить функцию в верхней части dashboard.erb.

Примечание: Этот пример будет делать все плитки интерактивными и откройте вкладку пустым, если нет ссылки URL не предусмотрен для плитки поэтому его не идеальное решение, но делает работу *

$(function bringToTop() { 
    $('li').live('click', function(e){ 
    var widget = $(this).find('.widget'); 
    if(widget.data('url')){ 
    var url = widget.data('link'); 
    var win = window.open(url, '_blank'); 
    win.focus(); 
    } 
    }); 
}); 

Так что ваш весь dashboard.erb файл должен выглядеть следующим образом:

<script type='text/javascript'> 
    $(function bringToTop() { 
    $('li').live('click', function(e){ 
     var widget = $(this).find('.widget'); 
     if(widget.data('url')){ 
     var url = widget.data('link'); 
     var win = window.open(url, '_blank'); 
     win.focus(); 
     } 
     }); 
    }); 
</script> 
<% content_for :title do %>Dashboard Name<% end %> 
    <div class="gridster"> 
    <ul> 

    <li data-row="1" data-col="1" data-sizex="1" data-sizey="1"> 
     <div data-id="mydata" data-view="Hotness" data-title="Data Title" data-cool="20" data-warm="1000" data-link='http:\\www.stackoverflow.com'></div> 
    </li> 
</ul> 

Примечание:

Что-то, что я еще не тестировал, но я обнаружил, что при поиске в Интернете это означает, что использование любой из вышеперечисленных опций, которые я предоставил, может не работать на устройствах iOS. Проблема, которая может быть исправлена ​​уже, и я не сбиваю Gridster любыми средствами, это с Gridster. В Гридстере есть Open issue for click events on iOS devices.

Благодаря Phylor над на GitHub для обеспечения временного исправления/решение, которое было подтверждено работая от 2/21/2016 (не мной).

Просто добавьте следующие строки в верхней части dashboard.erb файла:

<script type='text/javascript'> 
    function openUrl(obj) { 
    var widget = $(obj).find('.widget'); 
    var url = widget.data('url'); 
    window.open(url, '_blank'); 
    } 

    $(function() { 
    $('li').live('click', function(e){ 
     openUrl(this); 
    }); 
    $('li').live('touchend', function(e){ 
     openUrl(this); 
    }); 
    }); 
</script> 

Это мой первый пост, так что я прошу прощения за ошибки форматирования, но понял, что пришло время, чтобы начать давать в сообщество, которое имеет помогли мне так много. Надеюсь это поможет!

Смежные вопросы