访问自定义指令环境angularjs之外的全局范围

时间:2014-07-02 17:33:19

标签: javascript angularjs ng-show ng-hide

所以这是我的自定义指令示例代码

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 个答案:

答案 0 :(得分:0)

你可以这样做:

<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。

第二个选项的工作plnkr:plnkr