Meteor,如何在客户端显示网址查询?

时间:2013-08-09 00:54:46

标签: meteor

我是流星的新手,但看起来这应该很简单。我想创建一个页面,将get变量拉下来并在客户端上显示它

ex: www.example.com?yourname=bob

,页面将显示

bob

我觉得这应该很容易,但到目前为止还没能做到。我在客户端加载请求信息时创建了一个调用,但由于某种原因它在第一次加载时不起作用。在后续加载时它会。

<head>
  <title>Page Chat</title>
</head>

<body>
    <div id="wrapper">
        {{> name}}
    </div>
</body>

<template name="name">
  {{name}}
  <br />
  <input type="button" value="Click" />
</template>

js code

if (Meteor.isClient) {
  Meteor.startup(function(){
    Meteor.call("getData", function(error, result){
        if(error){
          Session.set("name", "bob");
        }
        else{
          Session.set("name", result.name);
        }
    });

  });

  Template.name.name = function(){
    return Session.get("name");
  };
  Template.name.events({
    'click input' : function () {
      // template data, if any, is available in 'this'
      if (typeof console !== 'undefined')
        console.log("You pressed the button");
    }
  });
}

if (Meteor.isServer) {
  var connect = Npm.require('connect');
  var app = __meteor_bootstrap__.app;
  var post, get;

  app
    // parse the POST data
    .use(connect.bodyParser())
    // parse the GET data
    .use(connect.query())
    // intercept data and send continue
    .use(function(req, res, next) {
      post = req.body;
      get = req.query;
      return next();
  });
  Meteor.startup(function () {
  });
  Meteor.methods({
    getData: function() {
      return get;
    },
    postData: function(){
      return post;
    }
  });
}

如果可能的话,我想在初始页面加载时共享数据,创建单独的页面加载以获取首次加载页面时已经存在的信息似乎是浪费。

2 个答案:

答案 0 :(得分:4)

使用像meteor-router这样的东西可能会更容易。然后你可以做

服务器端js:

Meteor.Router.add('/something', function() {
  return this.params.yourname;
});

因此,如果您访问example.com/something?yourname=Bob,则会返回Bob

从查询字符串/输入参数直接向客户端显示内容时要小心,就好像在用于XSS之前不检查它一样。

答案 1 :(得分:0)

原始网址为“http://example.com:3000/test?xyz”,您可以使用下面的任何一个

Router.current()。request.url “http://example.com:3000/test?xyz

Router.current()。网址 “http://example.com:3000/test?xyz

Router.current()。originalUrl “http://example.com:3000/test?xyz

Router.current()。route._path “/测试”

Router.current()。route.getName() “测试”

https://github.com/iron-meteor/iron-router/issues/289