铁路由器:如果置于“if(Meteor.isClient)”内部,则路由不起作用

时间:2014-10-07 03:05:46

标签: meteor iron-router

我正在使用iron:router@1.0.0-pre3和meteor 9.3.1。

模板代码:

<head>
  <title>ironman</title>
</head>

<body>
</body>

<template name="hello">
  <button>Click Me</button>
  <p>You've pressed the button {{counter}} times.</p>
</template>

Javascript代码:

if (Meteor.isClient) {
    // counter starts at 0
    Session.setDefault("counter", 0);

    Template.hello.helpers({
        counter: function() {
            return Session.get("counter");
        }
    });

    Template.hello.events({
        'click button': function() {
            // increment the counter when button is clicked
            Session.set("counter", Session.get("counter") + 1);
        }
    });


    Router.route('/', function() {
        this.render('hello');
    });

}

上面定义的路线不起作用。 但是,如果我将路线定义放在if (Meteor.isClient) {之外,它就会开始工作。

这是设计的吗?请指教。

1 个答案:

答案 0 :(得分:0)

这是设计的。

IronRouter允许您选择应用路线的位置:clientserver。 默认情况下,所有路由都连接到客户端,但您可以选择将路由应用到服务器端:

Router.route('/item', function () {
  var req = this.request;
  var res = this.response;
  res.end('hello from the server\n');
}, {where: 'server'});