【发布时间】:2015-04-29 23:26:04
【问题描述】:
我开始在我的应用程序中使用 angularjs,但在动态加载服务器结果时遇到了问题。 我有一个资源:
var GroupingTagMachines = $resource('/grouping_tags/:grouping_tag_id/machines', { format: 'json' },
{
query: { method: 'get', cache: true, isArray: true }
});
点击链接时我会使用它:
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 函数...api.jquery.com/slidedown
标签: angularjs ngresource