以编程方式更改路径后访问路径控制器中的参数

时间:2014-05-24 05:43:57

标签: meteor iron-router

iron-router documentation describes changing routes programmatically。该示例显示了如何传递参数,但我在路由控制器扩展中访问此参数时遇到问题。

在下面的代码中,我如何访问'baz'函数中的waitOn值?

routes.js

Router.configure({
  loadingTemplate: 'Loading',
  notFoundTemplate: 'NotFound',
  templateNameConverter: 'upperCamelCase',
  routeControllerNameConverter: 'upperCamelCase',
  onBeforeAction: 'loading'
});

Router.map(function () {
  this.route('foo', {
    path: '/',
    action: function() {
      Router.go('bar',{_id: 'baz'});
    }
  });

  this.route('bar');
});

bar.js

BarController = RouteController.extend({
  waitOn: function() {
    // this.params._id does not work
    // this._id does not work
    // do work and return something;
  },
  data: function() {
    // fetch and return something;
  },
  action: function() {
    this.render();
  }
});

澄清:我希望在动态路径段中不包含参数的情况下实现此目的。我只想像任何其他JavaScript函数一样传递参数。

1 个答案:

答案 0 :(得分:1)

您需要在路径变量

中包含参数

如果您使用了<{p>,则为foo路径

path: '/:_id'

而不是

path : '/'

添加:_id是一个占位符,可以bazthis.params对象一起使用。

然后this.params._id可以使用该值,您的网址也会更改为/baz