2015-09-19 3 views
1

Я пытаюсь использовать timeago.js с AngularJS. Если я помещаю дату в заголовок abbr, это работает Но если я использую {{data.commented_at}}, это не сработает. я погрузка времяго в документе.ready функция jquery.Как использовать {{data.date}} с помощью timeago? Angular

Как это исправить?

Благодаря

+0

Сво считает плохой практикой использовать Угловое и JQuery вместе по большей части, хотя есть и исключения. Но также, пожалуйста, поставьте код, чтобы показать нам, что вы уже пробовали. JSFiddle всегда хорош. Вы получите гораздо лучший ответ от сообщества, если приложите больше усилий в свой вопрос. –

+0

есть угловые модули для timeago и использование 'document.ready' в угловом приложении довольно бесполезно. Любые плагины jQuery должны быть инициализированы в директивах – charlietfl

ответ

1

Этот jsfiddle имеет свой собственный фильтр timeago, поэтому вам не нужно включать библиотеку jquery, а просто используйте этот фильтр.

http://jsfiddle.net/i_woody/cnL5T/

Фильтр Код:

angular.module('yourmodule', []).filter('timeago', function() { 
     return function(input, p_allowFuture) { 
      var substitute = function (stringOrFunction, number, strings) { 
        var string = (typeof stringOrFunction === "function") ? stringOrFunction(number, dateDifference) : stringOrFunction; 
        var value = (strings.numbers && strings.numbers[number]) || number; 
        return string.replace(/%d/i, value); 
       }, 
       nowTime = (new Date()).getTime(), 
       date = (new Date(input)).getTime(), 
       //refreshMillis= 6e4, //A minute 
       allowFuture = p_allowFuture || false, 
       strings= { 
        prefixAgo: null, 
        prefixFromNow: null, 
        suffixAgo: "ago", 
        suffixFromNow: "from now", 
        seconds: "less than a minute", 
        minute: "about a minute", 
        minutes: "%d minutes", 
        hour: "about an hour", 
        hours: "about %d hours", 
        day: "a day", 
        days: "%d days", 
        month: "about a month", 
        months: "%d months", 
        year: "about a year", 
        years: "%d years" 
       }, 
       dateDifference = nowTime - date, 
       words, 
       seconds = Math.abs(dateDifference)/1000, 
       minutes = seconds/60, 
       hours = minutes/60, 
       days = hours/24, 
       years = days/365, 
       separator = strings.wordSeparator === undefined ? " " : strings.wordSeparator, 

       // var strings = this.settings.strings; 
       prefix = strings.prefixAgo, 
       suffix = strings.suffixAgo; 

      if (allowFuture) { 
       if (dateDifference < 0) { 
        prefix = strings.prefixFromNow; 
        suffix = strings.suffixFromNow; 
       } 
      } 

      words = seconds < 45 && substitute(strings.seconds, Math.round(seconds), strings) || 
      seconds < 90 && substitute(strings.minute, 1, strings) || 
      minutes < 45 && substitute(strings.minutes, Math.round(minutes), strings) || 
      minutes < 90 && substitute(strings.hour, 1, strings) || 
      hours < 24 && substitute(strings.hours, Math.round(hours), strings) || 
      hours < 42 && substitute(strings.day, 1, strings) || 
      days < 30 && substitute(strings.days, Math.round(days), strings) || 
      days < 45 && substitute(strings.month, 1, strings) || 
      days < 365 && substitute(strings.months, Math.round(days/30), strings) || 
      years < 1.5 && substitute(strings.year, 1, strings) || 
      substitute(strings.years, Math.round(years), strings); 

      return [prefix, words, suffix].join(separator).trim(); 
      // conditional based on optional argument 
      // if (somethingElse) { 
      //  out = out.toUpperCase(); 
      // } 
      // return out; 
     } 
    }); 
+0

все еще имеет jQuery-зависимостей в нем ... не жалуется, но просто упоминает его – charlietfl

+0

отредактировал и удалил зависимости jquery. Спасибо за указание. –

1

Timeago плагин JQuery, который превращает все ABBR элементы с классом timeago и ISO 8601 отметку времени в праве собственности на что-то вроде этого «4 минуты назад» или «около 1 день назад».

Для этого требуется, чтобы ваш элемент html был abbr с классом timeago. Надеюсь, вы следуете этому с угловым. Так с угловым должно быть ::

<abbr class="timeago" title="commented_at">December 17, 2011</abbr> 

commented_at должен быть свойством области.

+0

да, это так. как я уже сказал, без углового связывания, он отлично работает. но когда я ставлю {{commented_at}}, он doest не работает – harleydavi

Смежные вопросы