我正在编写一个使用handlebars.js进行模板化的node.js应用程序。初始渲染工作,但是当把手改变时,它不会渲染新的渲染。初始渲染在控制台中显示html,但是在更改之后,我在父元素的innerHTML中得到{{>index}}
。这是我的.hbs文件:
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#"><img src="./img/MySpending.png"></a>
<div class="nav-collapse">
<ul id="navWrapper" class="nav">
{{#if settings.ISLOGIN}}
{{> loginNav}}
{{/if}}
{{#if settings.ISINDEX}}
{{> indexNav}}
{{/if}}
</ul>
</div>
<div class='navbar_form pull-right'></div>
</div>
</div>
</div>
<div id="bodyWrapper" class="container" style="padding-top:60px;">
{{#if settings.ISLOGIN}}
{{> login}}
{{/if}}
{{#if settings.ISINDEX}}
{{> index}}
{{/if}}
</div>
这是我的节点代码:
var islogin=true;
var isindex=false;
app.configure( function () {
app.set('views', __dirname + '/views');
app.set('view engine', 'hbs');
app.set('ISLOGIN', islogin);
app.set('ISINDEX', isindex);
app.engine('hbs', hbs.express3({
partialsDir: __dirname + '/views/partials'
}));
app.use(express.static(path.join(__dirname, 'public')));
});
socket.on('login', function(data) {
console.log('login');
console.log(data);
var checkUser= db.users.find(data, function(err, docs){
if(err!==null || docs==null){
console.log(err);
}
else{
var result=docs;
console.log(result);
}
});
console.log(checkUser[0]);
if(checkUser !== null) {
user=checkUser[0];
console.log(user);
islogin=false;
isindex=true;
socket.emit('uploadList', checkUser.total);
}
else{ console.log('Log in invalid');}
});
我还尝试过再次渲染页面,导致程序崩溃。如果有人甚至可以指出我正确的方向如何解决这个问题,那将非常感激。