# Code coverage report for ./src/ocLazyLoad.directive.js

## Statements: 100% (13 / 13) Branches: 50% (2 / 4) Functions: 100% (7 / 7) Lines: 100% (13 / 13) Ignored: none

All files » ./src/ » ocLazyLoad.directive.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37

    1

    1
    1

    1
    1

    1
    1
    1
    8

    1
    1

    1

    1

     'use strict';

    (function (angular) {
        'use strict';

        angular.module('oc.lazyLoad').directive('ocLazyLoad', function ($ocLazyLoad, $compile, $animate, $parse, $timeout) {
            return {
                restrict: 'A',
                terminal: true,
                priority: 1000,
                compile: function compile(element, attrs) {
                    // we store the content and remove it before compilation
                    var content = element[0].innerHTML;
                    element.html('');

                    return function ($scope, $element, $attr) {
                        var model = $parse($attr.ocLazyLoad);
                        $scope.$watch(function () {
                            return model($scope) || $attr.ocLazyLoad; // it can be a module name (string), an object, an array, or a scope reference to any of this
                        }, function (moduleName) {
                            Eif (angular.isDefined(moduleName)) {
                                $ocLazyLoad.load(moduleName).then(function () {
                                    // Attach element contents to DOM and then compile them.
                                    // This prevents an issue where IE invalidates saved element objects (HTMLCollections)
                                    // of the compiled contents when attaching to the parent DOM.
                                    $animate.enter(content, $element);
                                    // get the new content & compile it
                                    $compile($element.contents())($scope);
                                });
                            }
                        }, true);
                    };
                }
            };
        });
    })(angular);
    //# sourceMappingURL=data:application/json;base64,