2013-05-14 50 views
0

我有一个流星模板的辅助函数,理想情况下会有3个不同的结果出现。一个正确的结果,另一个为inccorect结果,如果用户拒绝的浏览器访问它的位置获得一个,见下图:可以评估一个if block是否超过流星的真或假

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

正如你可以看到这取决于回调是否成功与否。

回答

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

并从那里工作。

+0

感谢这么多的传统通用帮手,你怎么归还到使用车把模板? – 2013-05-14 12:43:57

+0

我不熟悉车把,但是如果你想要提高人的可读性,用“位置无效”替换字符串“连接成功”1和用“错误”替换0可能更有意义。 – legacy 2013-05-14 12:51:43

0

你也可以改变布尔类型为String,并定义了Template.registerHelper