我在路由器(铁路由器)中有以下代码
Router.map( function () {
this.route('hello',{path:'/hello',
onBeforeAction: function(){
console.log("QBConnected"+this.params.qbconnected);
Session.set("QBCONNECTED",this.params.qbconnected);
}
});
});
在test.html中使用以下代码
<template name="hello">
{{#if QBCONNECTED}}
<h1>Hello World if value={{QBCONNECTED}}</h1>
{{else}}
<h1>Hello World else value={{QBCONNECTED}}</h1>
{{/if}}
{{greeting}}
<input type="button" value="Click" />
</template>
在test.js中输入代码
if (Meteor.isClient) {
//Session.setDefault('QBCONNECTED',false);
Template.hello.greeting = function () {
return "Welcome to test.";
};
Template.hello.events({
'click input': function () {
// template data, if any, is available in 'this'
if (typeof console !== 'undefined')
console.log("You pressed the button");
}
});
Template.hello.QBCONNECTED=function(){
console.log(Deps.active+"get QBCONNECTED called"+Session.get('QBCONNECTED'));
return Session.get('QBCONNECTED');
};
}
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
});
}
当我尝试使用网址http://x.x.x.x:3000/hello?qbconnected=true
运行此操作时我按预期看到字符串“Hello World if value = true” 但是当我尝试网址http://x.x.x.x:3000/hello?qbconnected=false时,我看到了字符串 如果value = false,则为Hello World。任何人都可以解释为什么当QBCONNECTED的值为假时它进入if块?
当我尝试通过“Session.set(”QBCONNECTED“,true)从浏览器控制台手动设置值时,它会按预期打印”Hello World if value = true“,但是当我尝试”Session.set(“QBCONNECTED)时“,false)”它打印“Hello World else value =”,任何人都可以解释为什么QBCONNECTED在设置为false时会丢失它的值?
答案 0 :(得分:0)
这种情况正在发生,因为您的查询字符串中的false
被评估为"false"
字符串,而不是您可能预期的错误布尔值。