从子指令访问父指令范围的最佳方法是什么?

时间:2017-02-21 03:18:41

标签: angularjs angularjs-directive

AngularJS模块和指令

angular.module('tabApp', [])

.directive('tabPanel', function () {
    return {
        scope: {
            isOpen: '='
        },
        template: '<div><div tab-content></div>',
        link: function (scope) {
            alert(scope.isOpen);
        }
    };
})

.directive('tabContent', function () {
    return {
        scope: {
            isOpen: '='
        },
        template: '<div>Content</div>',
        link: function (scope) {
            alert(scope.isOpen);
        }
    };
});

HTML

<div ng-app="tabApp">
    <div tab-panel is-open="true"></div>
</div>

我需要tabContent来访问tabPanel中的isOpen属性吗?实现这一目标的最佳和最短途径是什么?

2 个答案:

答案 0 :(得分:3)

您只需将ng-repeat="_ in [ products ]" ng-init="total = 0" 从父指令传递给子指令...

is-open

选中此jsFiddle

答案 1 :(得分:1)

将子指令定义更改为

.directive('tabContent', function () {
    return {
        scope: {
            isOpen: '='
        },
        template: '<div>Content</div>',
        link: function (scope, attr, element, tabApp) {
            alert(scope.isOpen);
        },
        require: '^tabApp'
    };

然后使用link函数接收tabApp,类似于this