2013-10-26 102 views
4

我很難在我的dashing儀表板上連接小部件。我讀了另一篇文章,並得到了社會各界橫飛一些幫助,但是,只是我不能夠鏈接部件連接小部件的Dashing儀表板

我有我的text.coffee修改爲具有本節(樣品爲我的其他儀表盤)

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

當我點擊我的文本小部件時沒有任何反應。我也試過這樣做,但沒有。

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

但是,當我只是將下面的行添加到我的meter.coffee的onData部分時,它重定向到stackoverflow.com。

location.href = "www.stackoverflow.com" 

我在做什麼錯?你有沒有我可以嘗試的例子?

編輯1:

我也嘗試了下面的建議,沒有任何運氣。

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

點擊觸發的上下文是什麼。嘗試在末尾添加'return false'。我猜,如果有需要的話,「預防」應該也是最後一個。 – zishe

+0

我有我的米小部件中的點擊事件塊像這樣,但是,添加返回false不幫助。 類Dashing.Meter延伸Dashing.Widget @accessor '值',Dashing.AnimatedValue 點擊:(事件) - > location.href = 「http://www.stackoverflow.com」 返回false – sam

回答

9

從瀟灑的社區獲得幫助。下面是它的工作原理。只需修改您的儀表盤ERB你想看的網頁鏈接

<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設置(需要安裝dashing-contrib),並用於在使用不同小部件(Hotness和默認列表)的2個貼圖之間切換。這將適用於任何已創建的圖塊。這正是我碰巧使用它的地方。

<% 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的頂部增加一個功能。

注:這個例子會讓所有的瓷磚可以點擊的,如果沒有提供網址鏈接,瓷磚所以它不是一個理想的解決方案,但沒有工作*

$(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。在Gridster有一個Open issue for click events on iOS devices

感謝PhylorGitHub提供臨時修復/解決方案,該修復/解決方案已於2016年2月21日(不是我)確認。

就以下內容添加到您的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> 

這是我的第一篇文章,所以我對任何格式錯誤道歉,但想通這是時候開始回饋具有社區非常幫助我。希望這可以幫助!

相關問題