【问题标题】:Is there a way to prevent the loadingTemplate from showing up on "fast" routes?有没有办法防止 loadingTemplate 出现在“快速”路线上?
【发布时间】:2015-04-14 05:35:54
【问题描述】:

大多数时候,我的搜索返回太快,以至于不值得将加载模板显示给用户......(事实上,这会分散注意力,因为如果结果在一瞬间出现,人们可以接受空白屏幕稍后)...如果 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 您可以控制它是否显示快速路线,但我不需要所有这些功能,也不需要它提供的进度条......我只是想知道基本的铁路由器/waitOn 功能是否可以提供这种能力.

【问题讨论】:

  • 您可以将 display:none 放在加载模板上,并使其始终在 500 毫秒后显示为 settimeout

标签: meteor iron-router


【解决方案1】:

waitOn 函数上没有配置可以使用,但是你为什么不创建另一个布局模板,并用它来显示快速路线?

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

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

更新

或使用sacha:spin package 并根据查询的持续时间更改类名。

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

【讨论】:

  • 因为它是一个单一的路线“搜索”,有时很快,有时很慢,具体取决于用户搜索的内容。我希望它仅在等待超过 300 毫秒时才显示,例如...
  • 我认为waitOn功能上没有这样的配置,您可以使用sacha:spin package并将速度更改为3秒或5
  • 这可能是一个愚蠢的问题,但我应该把 Meteor.Spinner.options = {} 代码放在哪里?我把它放在我的javascript中,它崩溃了......
  • if(Meteor.isClient) 或在/client 文件夹内,还要确保您安装了meteor add sacha:spin
  • 谢谢...改变速度没有帮助。对于您使用“queryDuration”的其他建议,我不明白您的意思...
猜你喜欢
  • 2020-03-15
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 2014-01-13
相关资源
最近更新 更多