假设我有一个指令:
.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
有没有可能在 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/