[Jquery] ¿Cómo podría implementar una sustitución de fecha y hora difusa utilizando Knockout?


Answers

Aquí hay una alternativa, que probablemente no tenga ninguna ventaja sobre la respuesta de Niko, excepto quizás ser un toque más simple :) -

usf.ko.bindings['timeago'] = {
  update: function(element, valueAccessor) {
    var $element, date;
    date = ko.utils.unwrapObservable(valueAccessor());
    $element = $(element);
    if (date) {
      $element.attr('title', date.toISOString());
      $element.data('tiemago', false);
      return $element.timeago();
    }
  }
};
Question

Me gustaría implementar lo que hace este complemento usando jQuery: https://github.com/rmm5t/jquery-timeago

Una breve descripción de ese complemento:

Esto convertirá todos los elementos abbr con una clase de timeago y una marca de tiempo ISO 8601 en el título (conforme al microformato de patrón de diseño de fecha y hora):

<abbr class="timeago" title="2011-12-17T09:24:17Z">December 17, 2011</abbr>

En algo como esto:

<abbr class="timeago" title="December 17, 2011">about 1 day ago</abbr>

Excepto que use knockout, mi marcado se ve así:

<abbr data-bind="attr: { title: Posted }" class="timeago"></abbr>

Creo que algo no está sincronizado porque no pasa nada, incluso si puse la llamada en timeago dentro del viewmodel mismo. Supongo que necesito un suscriptor adjunto al observable "Publicado" pero no estoy seguro de cómo configurarlo.