app.js代码片段如下:
> app.get('/', function(req, res) {
> var mytime = 0 + 1;
> res.render('home', {time : mytime});
> }
需要做到每秒更新一次time在页面上,我的想法是用setInterval:
> app.get('/', function(req, res) {
> function add() {
> var mytime = 0 + 1;
> res.render('home', {time : mytime});
> }
> setInterval(add,1000);
> }
但是发现不会重新render view,有谁知道如何动态的render view吗?
这个更适合在客户端JavaScript代码中实现。
直接在浏览器上面更新时间啊。。。。。。
前端 data binding,自动更新
楼主的瓜太辣~
代码写的竟然让我 无 言 以 对。。
@bnuhero 大家也只推荐前端做这个功能,那我也只能作罢了
@xiaojue 虽然没有记时,但是重点是要重刷view啊,好吧我没太注意
可以做到,可以让用户摁 Alt + R,当频率达到 1000ms 的时候就实现了楼主的需求了。
或者还有一个办法,在前端写 setInterval(add,1000);
, 但是这个 add
得写成 ajax 请求,请求完了之后通过前端的方式渲染出来。
@ChopperLee2011 没有,我就是无言以对么。。
我正经回答一下,你这个代码的需求,用@think2011的第二个办法,可以实现,就是在view页面中使用前端js,ajax请求一个接口,拿你的server time,再更新dom元素。
html输出后是不能被修改的。。。除非你刷新页面。。
刷新页面的方法很多种,比如这个 <meta http-equiv=“refresh” content=“5”>
再比如setInterval 然后localtion.reload() 等等。。
又或者你把更新time这里做成一个iframe,其实就是页面不刷新,更新局部html的问题么,对吧。。
如果你要在controller里不断的让view主动更新数据,又不想轮询,可以考虑长连接comet技术或者socket.io来实现。
@xiaojue 确实前端刷新很方便,必须后台做的话用socket.io去发事件给前端也可以做,多谢你的解答。