Ошибка выдачи пользовательской директивы AngularJs

0

Я пытаюсь добавить изображение загрузки gif с наложением, пока выполняется запрос ajax в моем приложении angularjs. Я использую настраиваемую директиву, когда я пытаюсь загрузить мое приложение, которое я получаю - TypeError: elm.show не является функцией и TypeError: elm.hide не является функцией

var app = angular.module(moduleName, [HomeModule, CommonModule, SearchModule, AnalyticsModule, 'templatecache']);
        app.config(AppConfig);
        app.directive('loading', ['$http', function ($http) {
            return {
                restrict: 'A',
                link: function ($scope, $elm, $attrs) {
                    $scope.isLoading = function () {
                        return $http.pendingRequests.length > 0;
                    };
                    $scope.$watch($scope.isLoading, function (v) {
                        if (v) {
                            $elm.show();
                        } else {
                            $elm.hide();
                        }
                    });
                }
            };
        }]);

        app.controller('appController', AppController);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<body class="container-fluid" id="ng-app">

<div id="wrapper" ng-controller="appController">
    <div class="loading-dialog" data-loading>
    </div>
   <!-- <span us-spinner spinner-key="spinner-comm"></span>-->
    <div class="container-fluid" ng-controller="navTabController">...
Теги:

2 ответа

1
Лучший ответ

AngularJs использует jqLite как механизм выбора, и кажется, что они отказались от поддержки функций show/hide. Чтобы исправить это, вы должны, вероятно, включить jquery в свой раздел или использовать другой подход для show/hide элементов.

Обратите внимание, что если AngularJs обнаруживает, что jQuery включен, он будет использовать jQuery вместо jqLite.

  • 0
    Спасибо ... я бы попробовал это так
2

Ниже кода работает вместо show() или hide() без каких-либо ошибок:

     scope.$watch(scope.isLoading, function (v) {
                        if (v) {
                            elm.css('display', 'block');
                        } else {
                            elm.css('display', 'none');
                        }
                    });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню