Как написать директиву angularjs, которая добавляет задержку для рендеринга этого элемента? - PullRequest
0 голосов
/ 24 января 2019

Как написать директиву angularjs, которая добавляет задержку для рендеринга этого элемента?

<div my-directive>
     Hello - show after 1 second.
</div>

angular.module('myapp').directive('myDirective', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {

        }
    }
})

Ответы [ 3 ]

0 голосов
/ 24 января 2019

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js">
<!--<![endif]-->

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    <script  >
    angular.module('myapp',[]);
        angular.module('myapp').directive('myDirective', function () {
            return {
                restrict: 'A',
                link: function (scope, element, attrs) {
                    element.css("display", "none");
                    setTimeout(function(){ element.css("display", "block"); }, 1000);
                }
            }
        })
    </script>

</head>

<body ng-app="myapp">
    Start
    <div my-directive>
        Hello - show after 1 second.
    </div>

    <script src="" async defer></script>
</body>

</html>
0 голосов
/ 24 января 2019

Вы можете установить задержку рендеринга элемента, используя переменную области видимости и тайм-аут с ng-if в дочернем элементе директивы.

Надеюсь, это поможет.

var app = angular.module("myapp", []); 
app.directive('myDirective',  function( $timeout) {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
         $timeout(function() {
            scope.show = true;
         }, 1000);
        }
    }
});

app.controller("myCtrl", function($scope) {
    $scope.show = false;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>


<div ng-app="myapp" ng-controller="myCtrl">
  <div my-directive>
   <div ng-if="show">
     Hello - show after 1 second.
    </div>
</div>
</div>
0 голосов
/ 24 января 2019

Ну, я не думаю, что можно получить доступ к процессу рендеринга напрямую, хотя вы можете отобразить или скрыть элемент вручную

angular.module('myapp').directive('myDirective', function ($timeout) {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
          element.hide();            // hide on load
          $timeout(function() {
             element.show();         // show after delay
          }, 1000)
        }
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...