AngularJS:指令继承:控制器和范围

时间:2016-01-28 20:12:05

标签: angularjs inheritance angularjs-directive

我一直在寻找AngularJS中的指令继承而运气不佳。我有一个抽象指令(仅限控制器),它依赖于通常在指令范围内的某些参数。我可以很好地继承控制器,但似乎我必须在每个派生上重新声明所有抽象指令的参数,这意味着必须在每个实现中手动包含对abstract指令参数的更改。

有没有办法继承指令的控制器和范围/参数?

<小时/> 仅示例:

function Abstract($scope) {
    $scope.paramAbstractNeedsButDoesntExist

    // Do cool stuff
}

function Inheritor() {
    return {
        controller: ['$controller', function ($controller) {
            $controller('Abstract', {$scope: $scope});

            // Do my cool stuff
        }],
        ...
        scope: {
            // Inheritor's stuff
            paramInheritorNeeds: '@'
        }
    };
}

我已经概述了我在做什么。随意提出替代方法,但仍需要解决主要问题。

1 个答案:

答案 0 :(得分:0)

我最终创建了一个带有返回抽象类&#39;的方法的服务。范围;然后,基类扩展该范围并添加它自己的属性/参数。我使用[$controller][1]继承抽象类&#39;行为。为此,我从基类中删除了bindToControllercontrollerAs&#39;指令定义;这样抽象类就可以依赖于它在scope参数上的属性。