2

我是流星的新手,但看起来这应该很简单。我想创建一个页面,将 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代码

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

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

4

2 回答 2

4

使用诸如meteor-router 之类的东西可能更容易。然后你可以做

服务器端js:

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

因此,如果您访问过example.com/something?yourname=Bob,您会回来Bob的。

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

于 2013-08-09T01:03:17.113 回答
0

原始 url 是“ http://example.com:3000/test?xyz ”,你可以使用下面的任何一个

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

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

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

Router.current().route._path "/test"

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

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

于 2015-03-10T11:30:14.667 回答