【发布时间】:2014-08-16 13:44:06
【问题描述】:
根据 Iron-Router 文档,当您尝试路由到没有关联数据的页面时,这是处理路由的方式。
if Meteor.isClient
Router.onBeforeAction('dataNotFound')
Router.map ->
@route 'chat',
path: '/chat/:room_name'
notFoundTemplate: 'home'
data: ->
Rooms.findOne({room_name: @params.room_name})
我的代码专门设计用于在未定义特定聊天室时重定向到主页。它按预期工作,解决了一个非常烦人的问题。有很多页面闪烁。钩子似乎首先呈现 home 页面,而不是按照逻辑将您带到正确的页面。
因此,当访问确实存在的聊天室时,它会在瞬间快速呈现主页,然后加载聊天室。当访问一个不存在的聊天室时,它正在渲染主页,而不是快速重新渲染它。在这两种情况下,都会发生闪烁,使这些页面使用起来非常烦人。
我只是以错误的方式做这件事吗?或者有没有更好的方法来避免闪烁?
编辑:这只发生在硬页面重新加载时
这是我根据第一个答案更新的代码,但我遇到了一个问题,即每个 room_name 都被渲染,而那些不存在的代码没有被重定向到 home
路由:存在于客户端/服务器文件夹之外的根级别
if Meteor.isClient
Router.onBeforeAction('dataNotFound')
Router.map ->
roomExists = undefined
@route 'chat',
path: '/chat/:room_name'
notFoundTemplate: 'home'
onBeforeAction: ->
@subscribe('rooms').wait()
data: ->
Rooms.findOne({room_name: @params.room_name})
服务器代码
Meteor.publish 'rooms', () ->
Room.find({})
【问题讨论】:
标签: coffeescript meteor iron-router