2016-02-25 60 views
0

我有鐵路由器設置的路由,確保頁面轉到頁面頂部:使用鐵路由器轉到Meteor.js頁面(url#部分)的某個id部分

Router.route('/services', { 
    name: 'services', 
    template: 'services', 
    onAfterAction: function() { 
      scrollTop(); 
    } 
}); 

function scrollTop() { 
    window.scroll(0, 0); 
} 

但是,如果我在另一條路線,和我有一個像/服務#鏈接thisid

它仍然會帶我到頁面(而不是網頁與ID部分的頂部= thisid)。

有沒有辦法解決這個問題?

+0

鐵路路由器將片段#thisid識別爲'this.params.hash'。 [documentation](http://iron-meteor.github.io/iron-router/)(搜索this.params.hash)寫在'Router.route('/ route',function(){'語法,我沒有爲你測試的情況下,但檢查哈希的if語句應該能夠防止不希望的scrollTop()調用。 –

+0

可以請你把這個應用到我的情況嗎?我沒有得到它 – user1072337

回答

0

這應該解決您的問題,無論是針對此問題還是您的layout override問題。

Router.configure({ 
    layoutTemplate: 'main', 
    onAfterAction: function(){ 
    console.log('hash', this.params.hash); 
    if(!this.params.hash){ 
     scrollTop(); 
    } 
    } 
}); 
Router.route('/services', { 
    name: 'services', 
    template: 'services', 
}); 

Router.route('/inquiry', { 
    name: 'inquiry', 
    template: 'inquiry', 
    layoutTemplate: 'alternate' 
}); 

this.params.hash爲單向確保有用於執行scrollTop的前散列任何值。查詢路線上的layoutTemplate覆蓋佈局,同時仍尊重全球onAfterAction。

+0

錯誤:找不到名爲「alternate」或「alternate」的模板,您確定已經定義了它嗎? – user1072337

+0

除非用於layoutTemplate我只是使用layoutTemplate:'inquiry' – user1072337

+0

另外,散列(#this或# )在這個路由系統的頁面中沒有把他們帶到那個頁面... – user1072337

相關問題