来自params的Meteor Iron Router数据点击

时间:2014-05-01 00:38:08

标签: javascript meteor iron-router

我将数据上下文通过Iron Router传递到页面。我可以用this._id来调用它。

但是当你通过空格键在每个循环中的元素上有一个点击事件时,它会改变这个'我点击了那个对象。这完全有道理。

但是,我如何从我刚刚点击的元素中获取一些属性,但是还获得了我从路由器定义的参数信息?

例如,如果我有一个帖子列表:

{{#each posts}}
  <li class="post-title">{{title}}</li>
{{/each}}

然后点击列出的元素:

'click .post-title': function(){
  console.log(this) //this will be the _id of the post I clicked.

 var new_object = {
   title: this.title,  //from that object I want that title
   page_url: // But here I want the params data I defined in the router //
 }
}

如果它不是点击事件,我可以说,this._id ......但正如你在本例中所见,我无法做到。任何帮助,将不胜感激。感谢。

2 个答案:

答案 0 :(得分:2)

您可以像这样访问当前路线的数据:

'click .post-title': function(){
  var data = Router.current().data();
  console.log(data);
}

答案 1 :(得分:0)

你也可以这样做:

假设您的网页位于客户端/ views / posts / post_item.html中,并在其中包含:

<div class="post-title">
  Something To Click On
</div>

您的JS文件将位于client / views / posts / post_item.js及其内部:

 'click .post-title': function() {
    Router.go('postEdit', {_id: this._id});
  }

{_id: this._id}部分是您如何将您点击.post-title的帖子的_id传递给Iron Router。铁路由器需要将内容作为哈希/键值传递。

然后在router.js:

  this.route('postEdit', {
    path: '/posts/:_id/edit',
    data: function() { return Posts.findOne(this.params._id); }
  });