我想获得latLng,但仅限于事件发生后。怎么能实现这一目标?我已经尝试过跟踪器等,但没有任何效果。唯一有效的是调用Geolocation.latLng();来自助手内部,即事件之前。
以下是我希望它能起作用的方式。我用Session.set()和Session.get()来尝试过同样的事情。我也尝试使用Tracker依赖项,但由于该位置不可用,因此立即触发changed()无效。
我应该包括我正在使用位于https://github.com/meteor/mobile-packages/的Meteor Development Group创建的软件包。
var location = {};
Template.Home.helpers({
'location': function() {
return location;
}
);
Template.Home.events({
'focus .location': function() {
location = Geolocation.latLng();
},
});
答案 0 :(得分:2)
我喜欢@ ZuzEL的回答,但万一你真的想按照Sessions的方式去做:
Template.Home.helpers({
'location': function() {
return Session.get("location");
}
);
Template.Home.events({
'focus .location': function() {
Session.set("location", Geolocation.latLng());
},
});
不需要ReactiveVar包,因为Sessions就像全局反应一样:)
答案 1 :(得分:1)
这是因为您的location
本身不是反应变量。
var location = new ReactiveVar();
Template.Home.helpers({
'location': function() {
return location.get();
}
);
Template.Home.events({
'focus .location': function() {
location.set(Geolocation.latLng());
},
});
不要忘记包含反应性var包
meteor add reactive-var
并且here API Doc说每个方法都是被动的,无论位置如何变化,都可以在onRendered
回调中使用跟踪器
Template.Home.onRendered(function(){
this.autorun(function(){
location.set(Geolocation.latLng());
})
});