2014-05-01 70 views
1

我通過鐵路由器傳遞數據上下文到頁面。我可以用this._id調用它。點擊params上的流星鐵路由器數據

但是,當您通過空格鍵在每個循環內的元素上單擊事件時,它會將「this」更改爲我剛剛單擊的那個對象。這完全有道理。

但是,我將如何從我剛剛單擊的元素中獲取一些屬性,並且還獲取了從路由器定義的參數信息?

例如,如果我有文章列表:

{{#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 // 
} 
} 

如果它不是一個點擊事件,我可以說,這._id ...但正如你所看到的,在這種情況下,我不能。任何幫助,將不勝感激。謝謝。

+0

我想我可以將其設置爲會話,但我們有了另一種方式對我來說,click事件中訪問模板數據上下文。 – Colton45

回答

2

您可以訪問當前路線的數據,像這樣:

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

完美!謝謝,剛添加()到當前。 – Colton45

+0

已修復。對於那個很抱歉。 –

+0

這不適用於鐵路由器:路由器1.0.12,我不得不使用'Router.current()。params' – Iwazaru

0

你也可以這樣來做:

再說說你的網頁是在客戶端/視圖/職位/ post_item.html和裏面你有:

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

這個你JS文件將在客戶端/人次/職位/ post_item.js和裏面:

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

{_id: this._id}部分是您如何傳遞給Iron Router您點擊.post-title英寸的帖子的_id。Iron Router需要將內容作爲散列/鍵值傳入。

然後在router.js:

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