我是否需要此指令的隔离范围?

时间:2014-05-19 15:39:54

标签: javascript angularjs

我想写一个非常简单的指令,它应该转换:

<hello name="StackExchange"></hello>

成:

<hello name="StackExchange"><span ng-click="alert('StackExchange')">Hello!</span></hello>

父作用域将具有alert()功能。这是我工作的代码:

angular.module('hello', []).directive('hello', function () {
    return {
        scope: { name: '=' },
        restrict: 'E',
        template: '<span ng-click="this.$parent.alert(name)">Hello!</span>'
    };
});

是否可以在不创建新的隔离范围的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以创建一个可以访问父作用域的新作用域,而不是使用隔离作用域。

angular.module('hello', []).directive('hello', function () {
    return {
        restrict: 'E',
        scope: true,
        template: '<span ng-click="alert(name)">Hello!</span>',
        link: function(scope, element, attrs) {
            scope.alert = function() {
                scope.$parent.alert(attrs.name);
            };
        }
    };
});

jsfiddle