angular run jquery $(document).ready

时间:2016-07-19 13:53:30

标签: javascript jquery angularjs

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

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

有没有办法从角度调用jquery $(document).ready一旦我收到了所有的http respose?或者我可以调用另一个Angular函数吗?

2 个答案:

答案 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-routeresolvement结合使用,可以在路线“渲染”之前等待特定的承诺响应。

当您的申请路线依赖于'init'数据时,最好使用这些解决方案。

  

resolve - {Object。=} - 可选的地图   应该注入控制器的依赖项。如果有的话   这些依赖是承诺,路由器将等待它们全部到   在控制器之前被解决或被拒绝   实例化。如果所有承诺都成功解决了,那么   注入的Promises的值被注入并且$ routeChangeSuccess   事件被解雇了。如果任何承诺被拒绝了   触发$ routeChangeError事件。为了更容易访问已解决的   来自模板的依赖关系,将提供解析图   路径范围,$ resolve(默认情况下)或自定义名称   由resolveAs属性指定(见下文)。这可以   使用组件作为路径模板时特别有用。

More information here

Using Resolve In AngularJS Routes