繁体   English   中英

角运行jQuery $(document).ready

[英]angular run jquery $(document).ready

我有一个SPA,可使用Angular http get检索可能大量的弹性形式的数据,并将其呈现到页面的窗格中。 我的问题是,如果在调用jquery $(document).ready函数之前未收到来自http get的完整响应,则我有一些使用jquery的花式滚动条无法正常工作。 对于较小的数据集,没有问题,只是较大的数据集。

我已经找到了一个部分解决方案,即将jQuery $(document).ready函数引入setTimeout,但是这不是很优雅,除非希望,否则我不希望总有延迟。

一旦我收到了所有的http重新放置,是否有一种方法可以从angular调用jquery $(document).ready? 还是我可以调用另一个Angular函数?

看来您的问题是,您想知道ng-repeat何时完成了DOM的呈现。 我认为这篇文章可以为您提供帮助。

它说创建一条指令,该指令将在DOM准备就绪时调用一个函数:

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>

结合使用angular-routeresolvement ,可以在“渲染”路线之前等待特定的承诺响应。

当您的应用程序路由依赖于“初始”数据时,最好使用这些解决方法。

resolve-{Object。=}-可选的依赖关系映射,应将其注入到控制器中。 如果这些依赖关系中的任何一个是应许的,路由器将在实例化控制器之前等待所有这些依赖关系被解决或一个被拒绝。 如果所有的诺言都已成功解决,则将注入已解决的诺言的值,并触发$ routeChangeSuccess事件。 如果任何承诺均被拒绝,则会触发$ routeChangeError事件。 为了更轻松地从模板访问已解析的依赖关系,解析映射将在路由范围内位于$ resolve(默认)或由resolveAs属性指定的自定义名称下(请参见下文)。 当使用组件作为路由模板时,这特别有用。

更多信息在这里

在AngularJS路由中使用解析

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM