制作自动更新,facebook风格的时间格式

时间:2012-05-06 18:15:04

标签: javascript templates jquery-templates mustache

有些人可以帮我弄清楚为什么我的javascript HTML模板不会自动更新时间,但常规HTML会这样做吗?这是我正在使用的模板库:https://github.com/blueimp/JavaScript-Templates

这是我的JS(你可以在这里摆弄它:http://jsfiddle.net/trpeters1/SpYXM/76/):

$(document.body).on('click', 'button', function(){
   var id= $(this).data('id');
   var data={id:id, string: "just now...", fxn: nicetime()};       
   var result = tmpl('<div id="string" data-id="'+id+'">{%=o.string%}</div><div id="function" data-id="'+id+'">{%=o.fxn%}</div>', data);     
   $('div[data-id="'+id+'"]').html(result);   
   nicetime();
});

function nicetime(){
  var time =  new Date(),
  var comment_date = setInterval(function() { 
  var time2 = time_since(time.getTime()/1000);
  $('#time_since').html(time2); 
  return time2; 
    }, 
  1000);
}

HTML:

<button data-id="1">1</button>
<div data-id="1"></div>  //tmpl output
<div id="time_since"></div>  //non-tmpl output

1 个答案:

答案 0 :(得分:3)

你需要像this这样的东西。

使用JavaScript模板,您通常需要模板一次,然后动态更新特定元素的值,而不是每秒重置整个元素的innerHTML。

这是JavaScript:

$(document.body).on('click', 'button', function(){
    var id= $(this).val(),
        time = +new Date,
        data = {
            id: id,
            string: "just now..."
        },    
        result = tmpl('<span class="string">{%=o.string%}</span>', data),
        tgt = $('#'+id),
        str;
    tgt.html(result);    
    str = tgt.find('.string');
    window.setInterval(function() {
        str.html(time_since(time/1000));
    }, 1000);
});