0

我有一个流星模板的辅助函数,理想情况下希望出现 3 种不同的结果。一种是正确的结果,另一种是错误的结果,另一种是用户拒绝浏览器访问它的位置,见下文:

Template.header.created = function() {
navigator.geolocation.getCurrentPosition(success_callback,error_callback);

function success_callback(p){
    // Building Latitude = 51.522206
    // Building Longitude = -0.078305
    var lat = parseFloat(p.coords.latitude);
    var lon = parseFloat(p.coords.longitude);

  if( lat >= 51.521606 && lat <= 51.522606 && lon >= -0.078805  && lon <=  -0.077705 ) {
    Session.set("locationCheck",true);
  } else {
    Session.set("locationCheck",false);
  }
}

function error_callback(p){
     Session.set("locationCheck",false);
}
}

如您所见,这取决于回调是否成功。

4

2 回答 2

0

如果您尝试从函数传递的不仅仅是布尔逻辑,您可能应该使用字符串或数字返回。这可以通过以下方式实现:

Template.header.created = function() {
navigator.geolocation.getCurrentPosition(success_callback,error_callback);

function success_callback(p){
// Building Latitude = 51.522206
// Building Longitude = -0.078305
var lat = parseFloat(p.coords.latitude);
var lon = parseFloat(p.coords.longitude);

if( lat >= 51.521606 && lat <= 51.522606 && lon >= -0.078805  && lon <=  -0.077705 ) {
Session.set("locationCheck",0);
} else {
Session.set("locationCheck",1);
}
}

function error_callback(p){
 Session.set("locationCheck",2);
}
}

并从那里工作。

于 2013-05-14T12:32:07.950 回答
0

您还可以将 Boolean 类型更改为 String 并使用 Template.registerHelper 定义一个通用帮助器

于 2016-12-12T14:37:15.300 回答