【问题标题】:meteorjs iron-router and empty link tagsmeteorjs 铁路由器和空链接标签
【发布时间】:2014-01-26 04:47:33
【问题描述】:

我在我的 meteorjs 项目中使用 Iron-router。我正在使用 after: 处理程序来设置显示或隐藏传单地图的会话变量。我不能像往常一样将地图放在我的模板中,因为meteorjs 抹去了地图 div 和它的状态。

现在我正在添加引导菜单和下拉菜单,它们构建为带有 h​​ref="#" 的锚标记,如下所示:

<ul class="nav nav-pills">
    <li class="active"><a href="#">Home</a></li>
    <li><a href="#">Profile</a></li>
    <li class="disabled"><a href="#">Disabled</a></li>
</ul>

点击这些菜单不会留下网址,但它会导致 Iron-router 在每次点击或子菜单下钻时调用我的 after: 处理程序。

有没有办法防止这种情况发生?这对我的项目无害,但似乎不干净。

【问题讨论】:

    标签: javascript twitter-bootstrap meteor iron-router


    【解决方案1】:

    您可以在单击 # 链接时阻止默认行为。

    Router.configure({
      layoutTemplate: 'appLayout'
      ...
    });
    

    如果你的布局是 appLayout

    Template.appLayout.events({
      "click [href=#]": function(e) {
        e.preventDefault();
      }
    });
    

    【讨论】:

    • 这种方式对我也很有效。你的两个答案都帮了大忙!
    【解决方案2】:

    默认情况下iron-router 附加到带有选择器a[href] 的链接。我发现这不太好用(尤其是使用引导插件)并开发了一个修复程序https://github.com/EventedMind/iron-router/pull/324

    您可以像这样修改链接选择器:

    if (Meteor.isClient){
      IronLocation.configure({
        linkSelector: "a[href][data-iron]"
      });
    }
    

    使用此设置,iron-router 将仅拾取具有data-iron 属性的链接。

    另一种方法是尝试绑定到a[href="#"] 并在event.stopPropagation() 到达iron-router 链接处理程序之前调用它。

    【讨论】:

    • 我不知道如何让您的代码正常工作。 IronLocation 在全局命名空间中不可用,如果您在 Meteor.startup() 中尝试此代码,则 configure() 方法不可用。所以哈哈哈哈哈
    • 确保您使用的是0.6.2iron-router。此外,如果您阅读package.js 文件,您会看到IronLocation 仅在客户端上可用。 (将更新示例以显示)。
    • 我意识到我使用的是旧版本的 Iron-router。我猜我只需要在某处调用 bindEvents
    【解决方案3】:

    路由器会拦截所有链接点击以正常工作,因此阻止它不是一件容易的事(我猜也不是一个好主意)。

    您可以通过将地图正常放置在模板中来解决此问题,但在 a constant block 内。每当您进行一些自定义 DOM 操作时,它们都很有用。

    【讨论】:

    • 太棒了,感谢地图信息。我已经有一个恒定的块,它工作得很好。我猜提到地图并不是 100% 相关的
    【解决方案4】:

    只需使用ian:bootstrap-3

    默认情况下这将与 Iron-router 一起使用

    meteor add ian:bootstrap-3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 2021-10-28
      • 2023-03-08
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      相关资源
      最近更新 更多