【问题标题】:Meteor router returns Exception from Deps recompute: undefinedMeteor 路由器从 Deps 重新计算返回异常:未定义
【发布时间】:2013-06-17 10:14:35
【问题描述】:

我正在尝试在用户登录时重定向页面。但是,我一直遇到此异常。

Deps 重新计算的异常:未定义

//login.js

  Template.loginForm.events({
  'click button#loginAdmin':
    function() {
        Session.set('user', 'test');
        alert(Session.get('user'));
    }
  });

//route.js

Meteor.Router.add({
    '/': 'userPage',    
    '/admin': function() {
      alert('route: ' + typeof Session.get('user'));
    if (typeof (Session.get('user')) !== 'undefined') {
        return 'adminPage';
      } else {
        return 'loginPage';
      }
    },
    '/poll': 'pollPage',
    '/ustream' : 'streamPage'
  })

  // to determine which page to render
  Template.body.helpers({
    layoutName: function() {
      switch (Meteor.Router.page()) {
        case 'adminPage':
          alert('in admin');
          return 'adminLayout';
        case 'userPage':
          return 'userLayout';
        case 'pollPage':
          return 'pollLayout';
        case 'streamPage':
          return 'streamLayout';
        case 'loginPage':
          return 'loginLayout';
        default:
          return 'userLayout';
      }
    }
  });

即使我把 Meteor.Router.to('/admin');在我在 login.js 中设置会话后,它仍然没有路由到 adminLayout。相反,它遇到了上述错误。

有什么解决办法吗?

提前致谢!

【问题讨论】:

    标签: meteor router meteorite


    【解决方案1】:

    我不明白你为什么有这个开关。当您添加路线时,第二部分是模板。所以对于 '/': 'userPage' 当一个人访问你的根目录时,他们会看到 userPage 模板。我觉得它正在尝试渲染布局,但 layoutName 可能按照您的操作方式未定义。您应该在 {{renderPage}} 中希望路由器为您选择模板。

    编辑:

    好的,我认为您应该将路由正常并添加过滤器。

    Meteor.Router.add({
        '/': 'userPage',    
        '/admin': 'adminPage',
        '/poll': 'pollPage',
        '/ustream' : 'streamPage'
      })
    
    Meteor.Router.filters({
        'mustLogin': function(page) {
            if(typeof (Session.get('user')) !== 'undefined) {
                return page;
            } else {
                return 'loginPage';
            }
    });
    
    Meteor.Router.filter('mustLogin', {only: 'adminPage'});
    

    【讨论】:

    • 嗨,实际上我在某处有 {{renderPage}}。这些页面完美呈现给其他页面,但不适用于管理员登录页面。
    • 还是有同样的问题。我怀疑它在加载时尝试再次路由它导致问题。知道如何在加载时停止它以再次路由吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多