Angular.js指令控制器继承

时间:2015-07-07 12:25:21

标签: javascript angularjs

假设我有一个指令:

.directive('money', ['Service', function (Service) {
/*
* Some code
*/
controller: ['$scope', '$element', '$attrs', '$parse', function (scope, cElement, attrs, $parse) {
    scope.someValue=1;
    scope.someFunction = function(){
        console.writeline('money');
    }
}

并且有第二个指令:

 .directive('cash', ['Service', function (Service) {
    /*
    * Some code
    */
    controller: ['$scope', '$element', '$attrs', '$parse', function (scope, cElement, attrs, $parse) {
        scope.someValue=1;
        scope.someFunction = function(){
            console.writeline('cash');
        }
    }

正如您所看到的,这两个指令之间的区别仅在于一个函数的内容。 如此完美的方式将继承someFunction

的所有控制器和阴影

甚至有可能在角度上制作这样的东西,或者我应该留下两个如此小的差异的指令?

2 个答案:

答案 0 :(得分:1)

为什么不只有一个console指令来抓取指令元素中属性的写入内容?

所以,而不是<div data-money></div><div data-cash></div>您有<div data-console text="money"></div><div data-console text="cash"></div>

基本上,将不同的属性划分为可以带入更通用指令的属性。

根据评论,这个怎么样?将控制器创建为独立函数,然后在两个指令中使用相同的控制器。

在这一点上,我不确定它是否会为您节省很多(或任何)代码,并且对于这种重构可能有点过分。考虑到微小的差异,让它保持原样可能更有意义。

答案 1 :(得分:0)

是的,有继承选项,之前讨论过: AngularJS controller inheritance

编辑: 此外,您可以采用通用功能并通过注入服务进行共享,这些变体可以作为参数传递。