从Route(Iron Router)设置反应数据源会破坏反应性

时间:2014-08-04 05:08:57

标签: meteor iron-router

我在路由器(铁路由器)中有以下代码

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时会丢失它的值?

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您的查询字符串中的false被评估为"false"字符串,而不是您可能预期的错误布尔值。