Чтобы объяснить мой конкретный прецедент: Итак, у меня есть новостная модель с полем «created_at». Отображение всех дат с помощью ArrayController работает отлично и, как ожидалось. Но то, что я хочу сделать сейчас, преобразует эти даты в нечеткое время с http://pragmaticly.github.io/smart-time-ago/ (или http://timeago.yarp.com/). Проблема здесь, мне нужно позвонить $('.timeago').timeago('refresh');
после того, как отметки времени будут загружены и отображены. Кажется, что все работает нормально, пока я перемещаюсь внутри ember-приложения. Но когда я обновляю сайт, плагин каким-то образом не может его преобразовать. Таким образом, я полагаю, что команда не вызывается в нужное время из приложения. я делаю, что в следующих двух направлениях прямо сейчас: в представлении:Обновление загруженных моделей с помощью JS
didInsertElement: function(){
$('body').timeago('refresh');
}
и в контроллере:
updateFuzzyTime: function(){
$('body').timeago('refresh');
}.observes('content')
Когда я делаю это в любом месте с помощью setTimeout()
набор команд для 1000 мс, очевидно, работает.
Как я могу получить ember для выполнения этой команды, когда модель полностью загружена и отображается при обновлении? (В другом проекте у меня была аналогичная проблема, и там я использовал команду rerender()
, которая действительно работала, но в этом прецеденте я просто не могу этого сделать)
Редактировать: просто отправьте его здесь. Плагин рассматривает атрибут datetime элемента времени. Так что мой HBS код выглядит следующим образом:
<time class="timeago" {{bindAttr datetime="date"}}>{{date}}</time>
И я полагаю, что причина, почему большинство крючков не работают потому, что даже несмотря на то, DOM оказывается я полагаю, Эмбер не обновлял атрибут еще.
Есть ли у кого-либо еще идеи? Или это недостающее будущее, вроде наличия события обратного вызова для bindAttr? – Markus