Я начал использовать angularjs в своем приложении, и я столкнулся с проблемой, когда динамически загружаю результаты сервера. У меня есть ресурс:
var GroupingTagMachines = $resource('/grouping_tags/:grouping_tag_id/machines', { format: 'json' },
{
query: { method: 'get', cache: true, isArray: true }
});
И я использую его, когда ссылка cliked:
HTML:
<a href data-ng-click="show($event, tag)">click me</a>
JS:
scope.show = function($event, tag) {
var clicked_link = $($event.currentTarget);
var tags_list = clicked_link.parent(".grouping-tag").find(".tag-machines");
if(tags_list.is(":visible")) {
tags_list.slideUp();
} else {
GroupingTagMachines.query({ "grouping_tag_id": tag.id }, function(tag_machines) {
tag.machines = tag_machines;
console.log(tag.machines.length + " machines returned");
tags_list.slideDown();
});
}
};
Теперь, когда соединение щелчок, отображается контейнер div (с анимацией скольжения вниз), а затем результаты появляются внутри. Как вы можете видеть, я делаю контейнер видимым в методе обратного вызова ресурса, поэтому сервер должен отвечать раньше.
Желаемое поведение - это результаты, которые появляются только после того, как контейнер станет видимым.
Любые предложения?
Показать код для 'tags_list.slideDown()'. Похоже, вы делаете манипуляции с DOM в контроллере, что не является хорошей идеей в Angular. Я предполагаю, что манипуляция DOM происходит за пределами цикла дайджеста Angular, вызывающего эту проблему ... но просто догадка, пока мы не увидим, что делает функция 'slideDown()' (при необходимости, также покажите HTML для контейнера) , –
slideDown() - функция jQuery ... http://api.jquery.com/slidedown/ – benams