【问题标题】:AngularJS: Directive Inheritance: Controller and ScopeAngularJS:指令继承:控制器和范围
【发布时间】:2016-01-28 20:12:05
【问题描述】:

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

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


仅示例:
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: '@'
        }
    };
}

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

【问题讨论】:

  • 抽象指令的意义是什么?
  • 请提供代码示例来说明您正在尝试做什么。 “抽象指令”没有看你在说什么就没有任何意义
  • 括号如何限定它只是一个不够明确的控制器?
  • 出于同样的原因,一张图片值得一千字。没有示例就必须重新声明变量而不看代码的描述很难理解。

标签: angularjs inheritance angularjs-directive


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 2016-01-13
    • 2013-05-28
    • 2016-03-28
    • 2014-05-20
    • 1970-01-01
    • 2014-05-05
    • 2014-07-13
    相关资源
    最近更新 更多