Возможна оценка блока if больше, чем просто истина или ложь в метеоре

У меня есть вспомогательная функция для шаблона метеора, и в идеале я бы хотел, чтобы появилось 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);
}
}

Как видите, это зависит от того, был ли обратный вызов успешным или нет.


person Sam Mason    schedule 14.05.2013    source источник


Ответы (2)


Если вы пытаетесь передать от функции больше, чем логическую логику, вам, вероятно, следует использовать строку или возвращаемое число. этого можно достичь:

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

и работать оттуда.

person legacy    schedule 14.05.2013
comment
Большое спасибо наследию, как вернуть его в шаблон с помощью руля? - person Sam Mason; 14.05.2013
comment
Я не знаком с рулями, но если вы стремитесь к удобочитаемости, возможно, имеет смысл заменить 0 строкой Успешное соединение 1 с недопустимым местоположением и 2 с ошибкой - person legacy; 14.05.2013

Вы также можете изменить логический тип на String и определить общий помощник с Template.registerHelper

person Anis D    schedule 12.12.2016