我将数据上下文通过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 ......但正如你在本例中所见,我无法做到。任何帮助,将不胜感激。感谢。
答案 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); }
});