2015-04-13 1 views
3

В большинстве случаев мой поиск возвращается так быстро, что не стоит мигать шаблон загрузки пользователю ... (на самом деле это отвлекает, так как люди в порядке с пустым экраном, если результаты наступают через секунду) ... Есть ли способ предотвратить отображение шаблона загрузки, если waitOn ждет только короткого промежутка времени?Есть ли способ предотвратить загрузку загрузочного шаблона на «быстрые» маршруты?

Вот моя конфигурация

Router.route('/search', { 
    waitOn: function() { 
     return searchSubsManager.subscribe("search", Session.get('searchString')); 
    }, 
    action: function() { 
     this.render('searchResults'); 
    } 
    }); 

Я видел, что с этим пакетом: https://github.com/Multiply/iron-router-progress вы можете контролировать, показывает ли это на быстрых трассах, но мне не нужно все, что функциональные возможности, и я не хочу, индикатор выполнения, который он предоставляет ... Мне просто интересно, может ли базовая функция router/waitOn обеспечить эту способность.

+0

Вы не могли бы поставить дисплей: ни на шаблоне загрузки и сделать его с SetTimeout всегда после 500ms – mwarren

ответ

1

Нет функции для использования в функции waitOn, но почему бы вам не создать другой шаблон макета и не использовать его для отображения быстрых маршрутов?

<template name="noLoading"> 
    {{> yield}} 
</template> 

Router.map(function() { 
    this.route('fastRoutes', { 
    path: '/someRoutes', 
    template: 'myHomeTemplate', 
    layoutTemplate: 'noLoading', 
    }); 
}); 

Update

или использовать sacha:spin package и изменить имя класса в зависимости от длительности запроса.

if(queryDuration){ 
Meteor.Spinner.options = { 
    className: 'none' 
    } 
}else{ 
    Meteor.Spinner.options = { 
    className: 'spinner' 
    } 
} 
+0

, потому что это единственный путь «поиск», что иногда быстро, а иногда медленно, в зависимости от того, что искал пользователь для. Я бы хотел, чтобы он показывался только в ожидании более 300 миллисекунд, например ... – Wes

+0

Я думаю, что в функции waitOn нет такой конфигурации, вместо этого вы можете использовать [sacha: spin package] (https: //atmospherejs.com/sacha/spin) и изменить скорость на 3 секунды или 5 – Ethaan

+0

Это может быть глупый вопрос, но где я могу поместить код Meteor.Spinner.options = {}? Я положил его в свой javascript, и он разбился ... – Wes