Я пытаюсь скрыть текст при нажатии на ссылку Закрыть, которая находится в шаблоне, выполнив его в контексте родительской области. Но это не сработает. Может ли кто-нибудь сказать мне, где я ошибся.
<!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>
Вам нужно изменить close = "closeAlert", чтобы закрыть = "closeAlert()", например:
<alert
ng-show="show"
topic="alertTopic"
description="alertDescription"
close="closeAlert()"
></alert>
Поскольку угловое это обертывает вашу функцию другой функцией, если вы используете пример & char
$parent.show
как вы создали директиву с изолированной областью видимости. ИЛИ вам нужно передать эту переменную в изолированной области видимости.