路线载荷首先不是简单地发现

时间:2014-08-08 20:22:17

标签: meteor iron-router

我有一条铁路线,根据网址参数搜索一个收集项目。如果找到它,则将该项作为数据上下文返回,否则呈现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函数会处理它。使用铁制路由器获得所需结果的正确模式是什么?感谢。

2 个答案:

答案 0 :(得分:0)

您是否可能忘记配置loadingdataNotFound挂钩?

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;
            }
        }
 });