单项页面的铁路由器数据功能

时间:2015-10-24 21:30:10

标签: meteor iron-router

 Router.route('/product/:product_id', {
  template: 'productmain',
  //data: function() {
  //  //console.log(this.params.product_id);
  //  return this.params.product_id;
  //}
  data: function (){
    _id  = this.params.product_id;

    product = Products.find({pid: _id});

    templateData = {
      _id: _id,
      product: Products.find({pid: _id}),
      title: product.title
    };

    return templateData;
  }
})

标题&产品似乎是空的,任何想法?

我无法理解为什么这两个不在我的模板中工作:

<div class="col-md-9 col-xs-9">
  <h1>{{ title }}</h1>
</div>

<div class="col-md-9 col-xs-9">
  <h1>{{ product.title }}</h1>
</div>

如果我在帮助函数中执行了Products.find({pid:_id}),它可以正常工作,但我需要为这一个产品提供不同的显示,希望有意义。

1 个答案:

答案 0 :(得分:2)

只需在product = Products.findOne({pid: _id});功能中使用data即可。您在模板中显示单个产品,而不是光标。

您可以按如下方式简化整个过程:

Router.route('/product/:product_id', {
  template: 'productmain',
  data: function (){
    return Products.findOne({pid: this.params.product_id});
  }
});

然后在你的html中做:

<div class="col-md-9 col-xs-9">
  <h1>{{_id}}{{ title }}</h1>
</div>

基本上data函数返回一个对象,该对象对于模板变为thisthis的所有属性均可使用,不带前缀,即{{this._id}}可缩短为{{_id}}