javascript - 指令不工作 AngularJS

标签 javascript angularjs angularjs-directive

该指令在 Controller 中不起作用。如何解决?

baseapp.directive('loading', function () {
    alert('loading');
    return {
        restrict: 'E',
        replace: true,
        template: '<div class="loading">loading</div>',
        link: function (scope, element, attr) {
            scope.$watch('loading', function (val) {
                if (val) {
                    element.addClass('show');
                    alert('show');
                } else {
                    element.addClass('hide');
                    alert('hide');
                }
            });
        }
    }
});

baseapp.controller ('ListCtrl', function ($scope, $http) {
    $scope.loading = true;
    $http.get('/blog').success(function(data) {
        $scope.users = data;
        $scope.loading = false;
    });
});

当您加载一个名为的指令时。来自 Controller $scope.loading = true; 什么也没发生

最佳答案

我注意到,您一遍又一遍地添加一个类 element.addClass('show'); 导致 if true 和后来 false: class='show hide show hide 。 ..' 等等,纠正此问题的一种快速方法是删除其中一个类,或者您可以切换类:

 .directive('myDir', function() {
      return {
        restrict: 'E',
        replace: true,
        template: '<div class="loading">loading</div>',
        link: function (scope, element, attr) {
            scope.$watch('loading', function (val) {
                if (val===true) {
                    element.addClass('show');
                     element.removeClass('hide');
                } else {
                    element.toggleClass('hide');
                    element.removeClass('show');
                }
            });
        }
    }
    });

除此之外,它似乎在我这边工作得很好:

Online Demo

Note: I recommend you not to use alerts for debugging use console.log instead.

关于javascript - 指令不工作 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26343037/

相关文章:

angularjs - 如何将验证属性添加到 md-autocomplete Angular Material 指令

angularjs - ng-click 不在嵌套指令中触发

javascript - Node escpos LIBUSB_ERROR_NOT_SUPPORTED

javascript - 有没有办法在 JavaScript 中隐藏我的 api? (从php中提取它?)

javascript - Dojo/AMD 模块 ID 区分大小写

javascript - 在 AngularJS 中使用选择输入选择不同的子 JSON 元素

javascript - 删除多个圈子google maps api

angularjs - Angular 1.5 中的 Angular UI 路由器

json - 在一个盒子里休息后端?

Javascript - 如何清除最后绘制的矩形,以便在 'dragging' 创建矩形时仅绘制 1