MeteorJS从之前的函数中检索JS中的结果?

时间:2016-05-04 22:32:03

标签: javascript meteor

使用Meteor,我希望能够检索给定模板的结果,在本例中为location,并将其用作另一个JS操作中的变量。这个的具体应用是API。

Template.myTemplate.onCreated(function(){
  this.location = new ReactiveVar();
  var self = this;
  $.getJSON('http://ip-api.com/json/?callback=?', function(lingo) {
    self.location.set(lingo.zip + ", " + lingo.city);
  });
});

Template.myTemplate.helpers({
  location: function(){
    return Template.instance().location.get();}
});

使用上面的代码,我会在HTML中分配{{location}}的区域得到回复。现在,我想使用{{location}}值,将其转换为字符串,并将其用作名为cheddar的变量。例如:

Template.anotherTemplate.onCreated(function(){
  this.zangrief = new ReactiveVar();
  var self = this;
  var cheddar = Template.instance().location.get();
  $.getJSON('http://www.anotherapi'+cheddar+'myapikey', function(red) {
    self.zangrief.set(red.stuff);
  });
});  

这一点是使用API​​#1获取我的位置,并使用它来获取API#2中的相关数据。在此示例中,我使用了var cheddar中的返回帮助程序代码来检索第一个模板{{location}}中的响应。这不起作用,所以我想知道如何处理这样的事情。

1 个答案:

答案 0 :(得分:1)

如果在客户端,那么您可以尝试以常规JS方式分配值var myvar = XXX;然后它应该可以通过window.myvar

在其他模板中访问
//begining of the file
var myvar;

//template 1
Template.myTemplate.helpers({
  location: function(){
    myvar = Template.instance().location.get()
    return Template.instance().location.get();}
});
//template 2
Template.anotherTemplate.onCreated(function(){
  this.zangrief = new ReactiveVar();
  var self = this;
  var cheddar = window.myvar
  //etc

查看docs on namespaces以及此帖:What is the variable scope in Meteor client side?