2016-02-25 1 views
0

У меня есть маршруты, настроенные с помощью утюга-маршрутизатора, которые гарантируют, что страница переместится в начало страницы:Использование железного маршрутизатора для перехода на определенную страницу id страницы (url # часть) в Meteor.js

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

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

Однако, если я нахожусь на другой маршрут, и у меня есть ссылка, как/услуги # thisid

он все равно будет принимать меня в верхней части страницы (а не к той части страницы с идентификатором = thisid).

Есть ли способ обойти это?

+0

Iron Router распознает фрагмент #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: «запрос» – user1072337

+0

также, хэш (#this или # что) не приводит их к этому id на странице с этой системой маршрутов ... – user1072337