我有一个SPA,可以使用Angular http get检索潜在的大量弹性数据并呈现到页面上的窗格中。我遇到的问题是,如果在调用jquery $(document).ready函数之前收到来自http get的完整响应,那么我使用jquery有一些花哨的滚动条无法正常工作。对于较小的数据集,没有问题,它只是更大的数据集。
我找到了一个部分解决方案,即将setTimeout引入jquery $(document).ready函数,但这不是很优雅,除非需要,否则我不想总是有延迟
有没有办法从角度调用jquery $(document).ready一旦我收到了所有的http respose?或者我可以调用另一个Angular函数吗?
答案 0 :(得分:1)
您的问题似乎是,您想知道ng-repeat何时完成呈现DOM。我认为这post可以帮到你。
它表示创建一个将在DOM ready上调用函数的指令:
var module = angular.module('testApp', [])
.directive('onFinishRender', function ($timeout) {
return {
restrict: 'A',
link: function (scope, element, attr) {
if (scope.$last === true) {
$timeout(function () {
scope.$emit(attr.onFinishRender);
});
}
}
}
});
html看起来像这样:
<div ng-repeat="item in items" on-finish-render="ngRepeatFinished">
<div>{{item.name}}}<div>
</div>
答案 1 :(得分:0)
将angular-route
与resolvement
结合使用,可以在路线“渲染”之前等待特定的承诺响应。
当您的申请路线依赖于'init'数据时,最好使用这些解决方案。
resolve - {Object。=} - 可选的地图 应该注入控制器的依赖项。如果有的话 这些依赖是承诺,路由器将等待它们全部到 在控制器之前被解决或被拒绝 实例化。如果所有承诺都成功解决了,那么 注入的Promises的值被注入并且$ routeChangeSuccess 事件被解雇了。如果任何承诺被拒绝了 触发$ routeChangeError事件。为了更容易访问已解决的 来自模板的依赖关系,将提供解析图 路径范围,$ resolve(默认情况下)或自定义名称 由resolveAs属性指定(见下文)。这可以 使用组件作为路径模板时特别有用。