订阅会话变量更改时的铁路由器重新加载路由

时间:2014-12-29 14:27:51

标签: meteor iron-router

我的铁路由器waitOn挂钩

上有以下代码
waitOn: function(){
            var start = Session.get("dashboardRegistrationsStart") || 0;
            var end = Session.get("dashboardRegistrationsEnd") || 20;
            return [
                this.subscribe('currentUser'),
                subs.subscribe("dashboardRegistrationsParticipants", this.params.id,start,end)
            ];
        },

每当我在Session中更改“dashboardRegistrationsStart”的值时,都会重新加载路径并重新呈现页面,包括加载模板。

我只想订阅下一条记录,我不想重新加载页面。

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

您的waitOn挂钩中有一个反应源数据。 Session.get...。每次值发生变化时,函数都会重新运行。

您应该阅读有关流星跟踪器的文档:http://docs.meteor.com/#/full/tracker并且您不应该以这种方式构建应用程序;但是如果你没有其他选择,你仍然可以将你的函数包装在非反应性的包装中。

看起来像那样:

waitOn: function () {
    Tracker.nonreactive( function () {
        var start = Session.get( "dashboardRegistrationsStart" ) || 0;
        var end = Session.get( "dashboardRegistrationsEnd" ) || 20;
        return [
            this.subscribe( 'currentUser' ),
            subs.subscribe( "dashboardRegistrationsParticipants", this.params.id, start, end )
        ];
    } );
}