iron-router 单项页面的数据函数

iron-router data function for single item page

 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}) 它工作正常,但我需要为这个产品提供不同的显示,希望有意义。

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

您可以将整个事情简化如下:

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 函数 returns 成为模板的 this 单个对象。 this的所有属性都可以不加前缀,即{{this._id}}可以简写为{{_id}}