Доступ к глобальной области действия вне пользовательских директив окружения angularjs

Так вот мой пример кода пользовательских директив

myApp.directive('anchorLink', function () {
    return {
        restrict: 'EA',
        link: function (scope, elem, attr) {
            elem.on('click', function () {
                scope.show = true;
            });
        }
    };
});

и вот моя HTML-разметка

<a href="javascript:;" anchor-link>click me</a>
<div ng-show='show'>show me</div>
<div ng-hide='show'>hide me</div>

как вы можете видеть, я хочу манипулировать $scope.show вне среды пользовательских директив, но это не сработало... вы можете мне помочь?

1 ответ

Вы можете сделать это:

<a href="javascript:;" ng-click="show=true">click me</a>
<div ng-show='show'>show me</div>
<div ng-hide='show'>hide me</div>

или же:

myApp.directive('anchorLink', function () {
    return {
        restrict: 'EA',
        link: function (scope, elem, attr) {
            elem.on('click', function () {
                scope.$apply(function (){
                   scope.show = true;
                });
            });
        }
    };
});

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

Рабочий плнкр второго варианта: плнкр

Другие вопросы по тегам