2013-10-26 134 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> 

这是我的第一篇文章,所以我对任何格式错误道歉,但想通这是时候开始回馈具有社区非常帮助我。希望这可以帮助!

相关问题