【问题标题】:Meteor - Router.go() doesn't run when passed a variableMeteor - Router.go() 在传递变量时不运行
【发布时间】:2015-06-09 10:38:08
【问题描述】:

我有一个我一直在重复使用的后退按钮的模板:

<template name="btnBack" label="" path="">
    <a href="" data-path="{{path}}" class="btn btn-info btn-small" role="button">
        <span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span> {{label}}
    </a>
</template> 

我静态地传递了两个字段labelpath

我的意图是将静态path 字段传递给Iron-Router 以更改呈现的模板。

href 设置为{{pathFor '{{path}}'}} 不起作用。 也没有将属性 onclick 定义为 Router.go('{{path}}')

在我的第三次尝试中,我将路径传递给数据属性: data-path="{{path}}"

然后我从模板助手中引用这个属性:

Template.btnBack.events({
  'click a': function(event, template) {
    var path = ''+event.target.dataset.path;
    console.log(path); 
    Router.go(path); 
  }
});

console.log 语句运行正确,并在 Google Chrome 的控制台窗口中输出静态定义的路径。

Router.go 但是,它什么也不做 - 它甚至不会为控制台中的错误路径抛出错误。

这是我实例化模板的方式: {{&gt; btnBack label="Back" path="home"}}

我做错了什么?

【问题讨论】:

  • var path=..之前添加event.preventDefault()
  • 成功了,谢谢!是否需要调用 event.preventDefault() 来阻止链接尝试重定向到 href(空白)?
  • 如果 a 定义了 href 属性,您需要调用 preventDefault。

标签: templates meteor static path iron-router


【解决方案1】:

您可以尝试将链接设置为

<template name="btnBack" label="" path="">
    <a href="{{ pathFor path }}" class="btn btn-info btn-small" role="button">
        <span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span> {{label}}
    </a>
</template>

【讨论】:

  • 你的方法也奏效了。这是不太冗长的一个,所以我想我会用它。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 2015-04-28
  • 2014-07-03
  • 2015-12-20
相关资源
最近更新 更多