我试图在角度中实现多个控制器继承。
我已经设置了我在JSBIN中尝试实现的内容的简化演示。
我试图从一个控制器实现原型继承,并从另一个控制器创建子范围。在提供的示例中 - outputCtrl
应该是父级或允许我装饰其中的一些功能。
我可以通过将控制器嵌套在DOM中来实现这一点
<div ng-controler='parentCtrl'>
<div ng-controler='outputCtrl'>
<div ng-controler='outputChildCtrl'>
并通过$scope.$parent.process_input
进行装饰。问题是这种模式重复了几次,我试图将继承保留在代码中(而不是DOM)。
outputChildCtrl
中的所需结果应启用:
$scope.proccess_input = function() {
// call outputCtrl.process_input here
// continue processing in child ctrl
$scope.result = $scope.processing_function($scope.result);
console.log('outputChildCtrl processing ',$scope.result);
};
修改
从评论中可以看出案件并不那么清楚。用例具有不同的表单控件。我有一个控制器处理输入字段(验证,格式化,设置等),输出字段(格式化,观察结果等) - 这些控制器中的每一个都是独立使用的。第三个字段是两个控制器的组合 - 输入和输出字段。输入的实现是相同的,因此原型继承就足够了,但输出需要在一个函数上进行一些组合 - jsbin中的proccess_input
函数。我目前正在使用有角度的原型继承,如上面的示例HTML所示 - 这种方法的问题是
我尝试将此行为移至代码而不是DOM,并保存两个范围。
希望这能澄清问题。
感谢。