ng-show не работает при использовании с пользовательскими директивами

0

Я пытаюсь скрыть текст при нажатии на ссылку Закрыть, которая находится в шаблоне, выполнив его в контексте родительской области. Но это не сработает. Может ли кто-нибудь сказать мне, где я ошибся.

<!doctype html>
<html ng-app="parking">
<head>
    <title>Parking</title>
    <script src="https://code.angularjs.org/1.3.14/angular.min.js"></script>
    <script>
        var app=angular.module('parking', []);
        app.controller('parkingCtrl', function($scope){
            $scope.show=true;
            $scope.alertTopic="Something went Wrong!";
            $scope.alertDescription="Try Again!";
            $scope.closeAlert=function(){
                $scope.show=false;
            };
        });
        app.directive('alert', function(){
            return {
                templateUrl:"alert.html",
                restrict: "E",
                replace: true,
                scope: {
                    topic: "=topic",
                    description: "=description",
                    close: "&close"
                }
            };
        });
    </script>
</head>
<body ng-controller="parkingCtrl">
    <alert
        ng-show="show"
        topic="alertTopic"
        description="alertDescription"
        close="closeAlert"
    ></alert>
</body>
</html>

<!--alert.html-->
<div class="alert">
    <span class="alert-topic">
     <span ng-bind="topic"></span>
    </span>
    <span class="alert-description">
    <span ng-bind="description"></span>
    </span>
    <a href="" ng-click="close()">Close</a>
</div>    
  • 0
    Из этого внутреннего html вам нужно сделать $parent.show как вы создали директиву с изолированной областью видимости. ИЛИ вам нужно передать эту переменную в изолированной области видимости.
Теги:
angularjs-directive

1 ответ

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

Вам нужно изменить close = "closeAlert", чтобы закрыть = "closeAlert()", например:

<alert
    ng-show="show"
    topic="alertTopic"
    description="alertDescription"
    close="closeAlert()"
></alert>

Поскольку угловое это обертывает вашу функцию другой функцией, если вы используете пример & char

  • 0
    Это сработало, спасибо @Tek :)

Ещё вопросы

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