javascript - Angular.js 指令 Controller 继承

标签 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

的所有 Controller 和影子

有没有可能在 Angular 上做出这样的事情,或者我应该留下两个差异如此之小的指令?

最佳答案

为什么不直接有一个 console从指令元素的属性中获取要写入的内容的指令?

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

基本上,将不同之处放入可以带入更通用指令的属性中。


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

虽然在这一点上,我不确定它是否会为您节省很多(或任何)代码,并且对于这种重构来说可能是过大的杀伤力。考虑到细微差别,保持原样可能更有意义。

关于javascript - Angular.js 指令 Controller 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31268501/

相关文章:

javascript - 带有 Owl Carousel 脚本的无尽 slider

javascript - 使用canvas drawImage将img分成两半

javascript - 如何让固定标题在滚动 html 表中工作(当标题有多行时)

javascript - Jasmine 测试不会进入 promise 的 then 部分

javascript - anchor 链接滚动动画仅在 Squarespace 上刷新 (JQuery) 后才起作用

javascript - 页面中多个 Bootstrap 模式窗口

javascript - Selenium WebDriver 和通用等待或延迟

javascript - AngularJS 选择框在模型更改时不更新

javascript - 无法在 plunker 中添加 Angular 应用程序依赖项

javascript - 高库存 : set xAxis as not "datetime"