在事件处理程序中构建Router.go()命令

时间:2014-08-25 16:21:03

标签: meteor iron-router

我似乎无法获得正确的语法。

我在一个类上有一个事件,并且在单击该类时,我希望根据上下文中的参数将用户发送到不同的路径。以下是错误的,但希望能够展示我想要实现的目标。

'click .foo': function(){
     param1= this.param1; param2 = this.param2;
     Router.go("routName", param1, param2)
}

1 个答案:

答案 0 :(得分:1)

这是一个让你入门的简单例子:

<template name="parent">
  {{> child childContext}}
</template>

<template name="child">
  <a href={{pathFor "my-route"}}>
    Go to my route with parameter = 'value'. (/my-route/value)
  </a>
</template>

Template.parent.helpers({
  childContext:function(){
    return {
      parameter:"value"
    };
  }
});

this.route("my-route",{
  path:"/my-route/:parameter"
});

由于href帮助器,我认为您希望使用计算{{pathFor}}值的锚点。

{{pathFor}}Router.pathRouter.go都采用相同的论点:

  • 路径名称作为第一个参数。
  • 一个对象,用作计算结果路径的数据上下文。

例如在my-route中,我们有一个/my-route/:parameter的路径,所以当我们想要使用某些数据上下文计算动态路径时,我们必须确保这个数据上下文是一个有参数的对象属性。

使用button + Router.go可能不适合将用户重定向到应用程序中的某个其他URL(这是锚点做的吗?),但这就是我们如何做到的:

<template name="child">
  <button type="button">
    Go to my route with parameter = 'value'. (/my-route/value)
  </button>
</template>

Template.child.events({
  "click button":function(event,template){
    Router.go("my-route",this);
  }
});