使用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}}
中的响应。这不起作用,所以我想知道如何处理这样的事情。
答案 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?