我有一条铁路线,根据网址参数搜索一个收集项目。如果找到它,则将该项作为数据上下文返回,否则呈现notFound
模板。代码如下所示:
this.route('profileView', {
path: list_path + '/profiles/:_id',
fastRender: true,
waitOn: function() {
if (Meteor.user()) {
return [Meteor.subscribe('singleProfile', this.params._id, Session.get("currentListId"))];
}
},
data: function() {
var profile = Profiles.findOne({
_id: this.params._id
});
if (!profile) {
this.render("notFound");
} else
return profile;
}
});
问题是notFound
模板在返回配置文件之前会被短暂加载,尽管我认为waitOn
函数会处理它。使用铁制路由器获得所需结果的正确模式是什么?感谢。
答案 0 :(得分:0)
您是否可能忘记配置loading
和dataNotFound
挂钩?
Router.onBeforeAction('loading');
Router.onBeforeAction('dataNotFound');
如果您想了解这里的实际情况,请look here。
答案 1 :(得分:0)
我必须在数据中检查this.ready()。更新的代码
this.route('profileView', {
path: list_path + '/profiles/:_id',
fastRender: true,
waitOn: function() {
if (Meteor.user()) {
return [Meteor.subscribe('singleProfile', this.params._id, Session.get("currentListId"))];
}
},
data: function() {
if(this.ready()){
var profile = Profiles.findOne({
_id: this.params._id
});
if (!profile) {
this.render("notFound");
} else
return profile;
}
}
});